Ich plane, zwei Variablen an eine Perl-Funktion übergeben, von denen eine optional sein kann. Ich versuche zu überprüfen, ob der zweite definiert ist oder nicht, aber es funktioniert nicht richtig. Wenn ich die Funktion als myFunction (18) aufgerufen habe, nimmt sie an, dass die Variable $ optional definiert ist und zur else -Anweisung geht. Aber in der else-Anweisung, wenn auf die $ optionale Variable zugegriffen wird, löst es einen "nicht initialisierten" Fehler aus. Das ist genau das Gegenteil von dem, was ich erwartet habe. Jede Hilfe wird sehr geschätzt.Verwendung von definierten/undef in Perl
sub myFunction {
my ($length, $optional) = (@_);
if(undef($optional)
{
more code..
}
else
{
more code...
}
}
myFunction(18)
rufen Wenn Sie viele, um herauszufinden, sind versucht, wie übergeben werden, dann nehmen Sie die Anzahl der Argumente: 'Skalar (@_)'. Wenn Sie 'foo (4, undef)' aufrufen, haben Sie 2 Argumente übergeben. –
Das liegt daran, dass der Test für einen undefinierten Wert [nicht definiert] (http://perldoc.perl.org/functions/defined.html), nicht [undef] (http://perldoc.perl.org) ist /functions/undef.html). – hd1