Я планирую передать две переменные функции perl, одна из которых может быть необязательной. Я пытаюсь проверить, определен ли второй, или нет, но он работает неправильно. Когда я вызывал функцию как myFunction (18), она предполагает, что переменная $ optional определена и переходит к инструкции else. Но в инструкции else, когда обращается к переменной $ option, она выдает «неинициализированную» ошибку. Это точно противоположно тому, что я ожидал. Любая помощь приветствуется.Использование определенного/undef в Perl
sub myFunction {
my ($length, $optional) = (@_);
if(undef($optional)
{
more code..
}
else
{
more code...
}
}
myFunction(18)
Если вы пытаетесь выяснить, сколько передаются, затем принимают количество аргументов: 'scalar (@_)'. Если вы вызываете 'foo (4, undef)', вы передали 2 аргумента. –
Это потому, что тест для неопределенного значения ['not defined'] (http://perldoc.perl.org/functions/defined.html), а не [' undef'] (http://perldoc.perl.org /functions/undef.html). – hd1