【发布时间】:2021-11-15 18:17:27
【问题描述】:
我打算将两个变量传递给一个 perl 函数,其中一个可能是可选的。我正在尝试检查第二个是否已定义,但它无法正常工作。当我将该函数称为 myFunction(18) 时,它假定变量 $optional 已定义并转到 else 语句。但是在 else 语句中,当访问 $optional 变量时,它会引发“未初始化”错误。这与我的预期完全相反。非常感谢任何帮助。
sub myFunction {
my ($length, $optional) = (@_);
if (undef($optional) {
more code..
}
else {
more code...
}
}
myFunction(18);
【问题讨论】:
-
那是因为未定义值的测试是
not defined,而不是undef。 -
如果你想知道有多少通过了,然后计算参数的数量:
scalar(@_)。如果你调用foo(4,undef),你已经传递了 2 个参数。
标签: perl