Jeśli włączono ostrzeżenia, użytkownik wiedziałby, na czym polegał problem.
Run to:
use strict;
use warnings;
my $val = chr(someFunction());
if($val == " ")
{
#do something
}
elsif($val == 0)
{
#do something else
}
sub someFunction {
return 1;
}
I masz: C:> test.pl Argument "" nie jest numeryczne w eq numerycznej (==) w C: \ test.pl linia 6. argument "^ a" nie jest liczbą w równaniu (numerycznym) == C: \ test.pl 6. linia
Dodawanie zastosowania diagnostyczne daje to dodatkowe wyjaśnienie:
(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.
Zatem, ponieważ nie chcemy wartości liczbowych, chcemy uzyskać ciąg eq: eq
. Jeśli jeszcze tego nie wiesz, możesz przeczytać perldoc perlop
, aby przeczytać o Equality Operators.
Jest to klasyczny przykład, w jaki sposób korzystanie z pragmy warnings
i strict
oszczędza czas.
Czy na pewno chcesz sprawdzić, czy $ val to dokładnie jedna spacja? Jeśli chcesz, aby pierwsza gałąź twojej instrukcji "if" była wykonywana, gdy $ val zawiera jeden lub więcej spacji, użyj zamiast tego wyrażenia regularnego. –