[perl] verificar si una variable es numérica
tlep
Mensajes publicados
597
Estado
Miembro
-
Char Snipeur Mensajes publicados 10112 Fecha de registro Estado Colaborador Última intervención -
Char Snipeur Mensajes publicados 10112 Fecha de registro Estado Colaborador Última intervención -
Hola,
estoy intentando en Perl verificar si una variable pasada como argumento de un script es numérica.
He probado con éxito:
if ($ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' numérico.\n";}
En cambio, no logro usar el NOT (para obtener lo contrario):
if (!$ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' no numérico.\n";}
=> no funciona po
if ($ARGV[2] !=~ m/^\d+$/){print "Argument '".$ARGV[2]."' no numérico.\n";}
=> no funciona po
if !($ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' no numérico.\n";}
=> no funciona po
Gracias :-)
estoy intentando en Perl verificar si una variable pasada como argumento de un script es numérica.
He probado con éxito:
if ($ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' numérico.\n";}
En cambio, no logro usar el NOT (para obtener lo contrario):
if (!$ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' no numérico.\n";}
=> no funciona po
if ($ARGV[2] !=~ m/^\d+$/){print "Argument '".$ARGV[2]."' no numérico.\n";}
=> no funciona po
if !($ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' no numérico.\n";}
=> no funciona po
Gracias :-)
Configuración: Windows XP Firefox 2.0.0.11
7 respuestas
Bonjour,
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 ;)
Hola.
No entiendo por qué
--
Salud! antes yo creía, ahora estoy fijado.Jésus Christ
Char Snipeur
No entiendo por qué
if (!$ARGV[2] =~ m/^\d+$/){print "Argument '".$ARGV[2]."' non numérique.\n";} no funciona. ¿Es por la prioridad de operadores? ¿Funcionaría un if (!($ARGV[2] =~ m/^\d+$/)){print "Argument '".$ARGV[2]."' non numérique.\n";}? En caso contrario, ya no entiendo nada, el not sobre un booleano siempre debe funcionar normalmente. --
Salud! antes yo creía, ahora estoy fijado.Jésus Christ
Char Snipeur
Hola,
aquí van algunas pruebas
--
106485010510997108
aquí van algunas pruebas
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 --
106485010510997108
otra posibilidad de probar lo no numérico es con la clase de caracteres complementada \D que busca los caracteres no numéricos
simplemente busco una correspondencia no numérica
--
106485010510997108
root@debian:~# perl -e 'print "non numérique\n" if ("aaa" =~ /^\D+$/)' non numériqueasí no necesito negar simplemente busco una correspondencia no numérica
--
106485010510997108