Se hai attivato gli avvisi, avresti saputo qual era il problema.
Esegui questo:
use strict;
use warnings;
my $val = chr(someFunction());
if($val == " ")
{
#do something
}
elsif($val == 0)
{
#do something else
}
sub someFunction {
return 1;
}
E si ottiene: C:> test.pl Argument "" non è numerico a eq numerica (==) in C: \ test.pl linea 6. argomento "^ a" non è numerico a eq numerica (==) in C: \ test.pl linea 6.
Aggiunta di utilizzare diagnosi ci dà questa spiegazione aggiuntiva:
(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.
Quindi, dal momento che non vogliamo eq numerici, vogliamo stringhe eq: eq
. Se non lo sapevi già, puoi leggere in perldoc perlop
per leggere su Equality Operators.
Questo è un classico esempio di come l'utilizzo dei comandi warnings
e strict
consente di risparmiare tempo.
Inoltre, sei sicuro di voler verificare se $ val è esattamente un carattere di spazio? Se vuoi che il primo ramo della tua istruzione "if" venga eseguito ogni volta che $ val contiene uno o più spazi, usa una regex. –