Wenn Sie Warnungen aktiviert hätten, hätten Sie gewusst, was das Problem war.
Führen Sie dies aus:
use strict;
use warnings;
my $val = chr(someFunction());
if($val == " ")
{
#etwas machen
}
elsif($val == 0)
{
#etwas anderes machen
}
sub someFunction {
return 1;
}
Und Sie erhalten: C:>test.pl Argument " " ist nicht numerisch in numerischer eq (==) in Zeile 6 von C:\test.pl. Argument "^A" ist nicht numerisch in numerischer eq (==) in Zeile 6 von C:\test.pl.
Durch das Hinzufügen von use diagnostics
erhalten wir diese zusätzliche Erklärung:
(W numerisch) Der angegebene String wurde als Argument an einen Operator übergeben,
der stattdessen einen numerischen Wert erwartete. Wenn Sie Glück haben, wird die Meldung
identifizieren, welcher Operator so unglücklich war.
Also, da wir kein numerisches eq
wollen, sondern ein string eq
: eq
. Wenn Sie das nicht bereits wussten, könnten Sie in perldoc perlop
nachschlagen, um über Gleichheitsoperatoren zu lesen.
Dies ist ein klassisches Beispiel dafür, wie die Verwendung der Pragmas warnings
und strict
Zeit spart.