¿Quién no ha tenido nunca el problema de comprobar si una expresión es numérica o no?
Perl no posee una función que lo haga automáticamente (por lo menos que yo conozca), sin embargo con una simple línea de código podemos salir de dudas:
# Return TRUE if an expression is numerical
sub is_numeric {
my ($exp) = @_;
if ($exp =~ /^(-?[\d.\-]*e[\d.\-\+]+|-?[\d.\-]\^[\d.\-]+|-?[\d.\-]+)$/){
# Corregida siguiendo las indicaciones de Joaquín Ferrero:
if ($exp =~ /^-?(?:[\d.-]+*e[\d.+-]+|\d[\d.-]*\^[\d.-]+|[\d.-]+)$/){
return 1;
} else {
return 0;
}
}