Si tenía habilitadas las advertencias, sabría cuál era el problema.
Ejecutar este:
use strict;
use warnings;
my $val = chr(someFunction());
if($val == " ")
{
#do something
}
elsif($val == 0)
{
#do something else
}
sub someFunction {
return 1;
}
Y se obtiene: C:> test.pl argumento "" no es numérica de la ecuación numérica (==) en C: \ test.pl línea 6. argumento "^ a" no es numérico en eq numérico (==) en C: \ test.pl línea 6.
Adición de diagnóstico de uso nos da esta explicación adicional:
(W numeric) The indicated string was fed as an argument to an operator
that expected a numeric value instead. If you're fortunate the message
will identify which operator was so unfortunate.
Entonces, dado que no queremos eq numérico, queremos cadena eq: eq
. Si aún no lo sabía, puede buscar en perldoc perlop
para leer sobre Equality Operators.
Este es un ejemplo clásico de cómo el uso de warnings
y strict
pragmas ahorra tiempo.
Además, ¿está seguro de que desea probar si $ val tiene exactamente un carácter de espacio? Si desea ejecutar la primera rama de su instrucción "if" siempre que $ val contenga uno o más espacios, use una expresión regular en su lugar. –