[perl] vérifier variable numérique
tlep
Messages postés
596
Date d'inscription
Statut
Membre
Dernière intervention
-
-
-
Bonjour,
j'essaie en perl de vérifier si une variable en argument d'un script est numérique.
J'ai testé avec succès :
if ($ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' numérique.\n";}
En revanche, je ne parviens pas à utiliser le NOT (pour obtenir le contraire) :
if (!$ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' non numérique.\n";}
=> marche po
if ($ARGV[2] !=~ m/^\d+$/){print "Argument '".$ARGV[2]."' non numérique.\n";}
=> marche po
if !($ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' non numérique.\n";}
=> marche po
Merci :-)
j'essaie en perl de vérifier si une variable en argument d'un script est numérique.
J'ai testé avec succès :
if ($ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' numérique.\n";}
En revanche, je ne parviens pas à utiliser le NOT (pour obtenir le contraire) :
if (!$ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' non numérique.\n";}
=> marche po
if ($ARGV[2] !=~ m/^\d+$/){print "Argument '".$ARGV[2]."' non numérique.\n";}
=> marche po
if !($ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' non numérique.\n";}
=> marche po
Merci :-)
A voir également:
- [perl] vérifier variable numérique
- Télévision numérique - Guide
- Télévision numérique terrestre - Accueil - TV & Vidéo
- Verifier compatibilite windows 11 - Guide
- Pavé numérique bloqué - Guide
- Clavier numérique bloqué - Guide
7 réponses
Salut,
la négation dans une regexp en perl, c'est: $chaine !~ m/$re/;
Dans ton cas:
print 'Argument '.$ARGV[2].' non numérique' if ($ARGV[2] !~ m/^\d+$/);
Tu pouvais aussi faire:
print "Argument ".$ARGV[2];
if ( $ARGV[2] =~ m/^\d+$/ ) {
print " numérique\n";
}
else {
print " alphanumérique\n";
}
tout simplement ;)
la négation dans une regexp en perl, c'est: $chaine !~ m/$re/;
Dans ton cas:
print 'Argument '.$ARGV[2].' non numérique' if ($ARGV[2] !~ m/^\d+$/);
Tu pouvais aussi faire:
print "Argument ".$ARGV[2];
if ( $ARGV[2] =~ m/^\d+$/ ) {
print " numérique\n";
}
else {
print " alphanumérique\n";
}
tout simplement ;)
Salut.
Je ne comprend pas pourquoi
Je ne comprend pas pourquoi
if (!$ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' non numérique.\n";}ne fonctionne pas. A cause de la priorité des opérateurs ? est-ce qu'un
if (!($ARGV[2] =~ m/^\d+$/)){print "Argument '".$ARGV[2]."' non numérique.\n";}fonctionnerai. Sinon, j'y comprends plus rien, le not sur un booléen doit toujours fonctionner normalement.
Salut,
voici quelques tests
voici quelques tests
root@debian:~# perl -e 'print "non numérique\n" if ("aaa" !~ /^\d+$/)' non numérique root@debian:~# perl -e 'print "non numérique\n" if (!("aaa" =~ /^\d+$/))' non numérique root@debian:~# perl -e 'print "non numérique\n" unless ("aaa" =~ /^\d+$/)' non numérique
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
une autre possibilité de tester le non numérique c'est avec la classe de caractères complémenté \D qui cherche les caractères non numérique
je cherche tout simplement une correspondance non-numérique
root@debian:~# perl -e 'print "non numérique\n" if ("aaa" =~ /^\D+$/)' non numériquecomme ça je n'ai pas besoin de nier
je cherche tout simplement une correspondance non-numérique