Aide pour un script perl

Résolu
bansan Messages postés 125 Statut Membre -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

Si quelqu'un pouvait me dire ou est ce que cela cloche dans mes lignes....

Ecrire un script Perl dont le rôle est de permettre à l'utilisateur de saisir une chaîne de caractères et
d'indiquer si cette chaîne représente une valeur numérique entière non signée (chaîne constituée
uniquement que de chiffres).


#!/usr/local/bin/perl
print "Saisir une phrase:";
$phrase=<STDIN>;
chomp $phrase;
$l=length($phrase);
for ($i=0;$i<$l;$i++)
{
$first=substr($phrase,$i,1);
}
for ($j=0;$j<10;$j++)
{
$je=$j
}
if ($first eq $je)
{
print "chiffres";
}
elsif ($first ne $je)
{
print"ooo"
}
Configuration: Windows XP
Firefox 2.0.0.13

2 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,
    #!/usr/bin/perl
    #
    use warnings;use strict;
    print "Saisir une phrase:";
    chomp(my $phrase=<STDIN>);
    
    $phrase=~/^\d+$/?print "chiffres\n":print"ooo\n";
    __END__

    0
    1. bansan Messages postés 125 Statut Membre 1
       
      Merci pour ce code ultra light et efficace
      J'aimerais ceic dit (si tu as le temps) que tu me dises comment ca a été possible...
      Use district??
      C'est quoi les district??

      Merci bcp
      0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    use strict et use warnings sont des pragmas qui permettent d'avoir un peu de discipline pour l'écriture de code
    tu peux lire cet article http://perl.mines-albi.fr/DocFr/perlstyle.html

    chomp(my $phrase=<STDIN>);

    ici j'obtiens la chaîne de caractères
    la fonction chomp permet de supprimer le \n a la fin de al chaine s'il existe

    $phrase=~/^\d+$/?print "chiffres\n":print"ooo\n";

    Ici c'est un peu plus compliqué.
    en 1ère temps parlons de l'opérateur ternaire condition?si vrai:si faux;

    donc si la condition est vrai c'est la 1ère partie de code qui sera exécuter
    si c'est faux ça sera la 2ème qui s'exécute

    parlons de la condition $phrase=~/^\d+$/

    Si tu veux vraiement utiliser Perl sache que les expressions régulières sont très utilsées.
    =~ c'est l'opérateur de correspondance
    \d c'est une classe de caractère qui signifie tout caractère qui est un chiffre
    l'équivalent est [0-9] - donc les chiffres de 0 à 9

    le + c'est un quantificateur qui veut dire un, ou n'importe combien de fois tu peux
    ^ signifie un emplacement - le début de la chaîne
    $ signifier un emplacement - la fin de la chaine

    Voici la traduction

    $phrase=~/^\d+$/
    SI $phrase correspond à un chiffre ou à n'importe combien des chiffres tu peux de début de la chaîne à la fin de la chaîne ALORS (ici c'est ?) affiche "chiffres\n" SINON(ici c'est :) affiche "ooo\n";

    j'espère que tu as compris un peu ;-)
    0