下面的 Perl 代码将打印“1”,但是函数 test2
实际上没有合法的输入值。为什么 Perl 会这样做?
test();
sub test {
my ($var) = @_;
test2($var);
}
sub test2 {
my (@array) = @_;
print scalar @array;
}
最佳答案
test2($var)
将一个标量传递给 test2
($var
),因此将一个标量分配给 @array
by my (@array) = @_;
。
相关标量 ($var
) 的值为 undef
,因为您在 中为
.$var
分配了“nothing” >my ($var) = @_;
也许您想要 test2(@_)
(传递 @_
中的零标量)而不是 test2($var)
(传递一个标量 $var
)?
关于arrays - Perl "scalar"函数在空数组上返回 "1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32465769/