Perl"标量"函数返回" 1"在一个空数组

时间:2015-09-08 19:30:46

标签: arrays perl scalar

以下Perl代码将打印" 1"但函数test2实际上没有合法的输入值。为什么Perl这样做?

test();

sub test {
    my ($var) = @_;

    test2($var);
}

sub test2 {
    my (@array) = @_;
    print scalar @array;
}

2 个答案:

答案 0 :(得分:3)

test2($var)将一个标量传递给test2$var),因此@array将一个标量分配给my (@array) = @_;

有问题的标量($var)的值为undef,因为您已分配"没有" $var中的my ($var) = @_;

也许你想要test2(@_)(传递@_中的零标量)而不是test2($var)(传递一个标量$var)?

答案 1 :(得分:1)

test内,$var被分配设置为undef。因此,您对test2的调用会传递一个包含一个元素的列表undef