Aide pour un script perl

Résolu/Fermé
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 - 3 avril 2008 à 17:37
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 6 avril 2008 à 18:44
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"
}
A voir également:

2 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
3 avril 2008 à 18:03
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
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
3 avril 2008 à 18:11
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
6 avril 2008 à 18:44
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