Aide pour un script perl [Résolu/Fermé]

Signaler
Messages postés
122
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
8 mai 2011
-
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
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"
}

2 réponses

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
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__

Messages postés
122
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
8 mai 2011

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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
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 ;-)