La pregunta original era cómo saber si una variable era numérica, no si "tiene un valor numérico".
Hay algunos operadores que tienen modos de operación separados para operandos numéricos y de cadena, donde "numérico" significa cualquier cosa que originalmente era un número o que alguna vez se usó en un contexto numérico (p. Ej. $x = "123"; 0+$x
, En , antes de la adición, $x
es una cadena, luego se considera numérico).
Una forma de saberlo es esta:
if ( length( do { no warnings "numeric"; $x & "" } ) ) {
print "$x is numeric\n";
}
Si la función bit a bit está habilitada, eso hace que &
solo sea un operador numérico y agrega un &.
operador de cadena separado , debe deshabilitarlo:
if ( length( do { no if $] >= 5.022, "feature", "bitwise"; no warnings "numeric"; $x & "" } ) ) {
print "$x is numeric\n";
}
(bit a bit está disponible en perl 5.022 y superior, y está habilitado de forma predeterminada si usted use 5.028;
o superior).
perldoc perlapi
nos dice: Prueba si el contenido de un SV parece un número (o es un número). "Inf" e "Infinity" se tratan como números (por lo que no emitirán una advertencia no numérica), incluso si su atof () no los asimila. Difícilmente una especificación comprobable ...