Mam zamiar przekazać dwie zmienne do funkcji perl, z których jedna może być opcjonalna. Próbuję sprawdzić, czy drugi jest zdefiniowany, czy nie, ale nie działa poprawnie. Kiedy nazwałem funkcję myFunction (18), zakłada ona, że zmienna $ opcjonalna jest zdefiniowana i przechodzi do instrukcji else. Ale w instrukcji else, gdy dostępna jest zmienna $ optional, generuje błąd "niezainicjowany". Jest dokładnie odwrotnie, niż się spodziewałem. Każda pomoc jest bardzo doceniana.Używanie zdefiniowanego/undef w Perlu
sub myFunction {
my ($length, $optional) = (@_);
if(undef($optional)
{
more code..
}
else
{
more code...
}
}
myFunction(18)
Jeśli próbujesz dowiedzieć się, ile są przekazywane, a następnie przyjmują liczbę argumentów: 'skalar (@_)'. Jeśli nazwiesz 'foo (4, undef)', zdałeś 2 argumenty. –
To dlatego, że test dla niezdefiniowanej wartości to ['nie zdefiniowane'] (http://perldoc.perl.org/functions/defined.html), a nie [' undef'] (http://perldoc.perl.org /functions/undef.html). – hd1