Aide pour un script perl

Résolu
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. Modérateur
    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 ;-)
    1. Modérateur
      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__

      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