arrays - Perl "scalar"函数在空数组上返回 "1"

标签 arrays perl scalar

下面的 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/

相关文章:

mysql - Perl:在 Perl-Hash 中存储来自 Mysql 表的列

perl - 为什么打印时哈希键的顺序不同?

python - 在每个文件上循环运行 shell 命令,将每个文件从标量转换为相应的 csv

.net - LinqToSql 中的标量函数

c - 使用标量变量或指针打印二维数组

JavaScript D3 : from csv to array

java - 使用 for 循环将文件中的数字行读取到二维数组

php - 比较两个数组并创建一个真/假值的关联数组

java - 将类中的所有静态变量放入数组/列表

mysql - SQL - 如何一次选择一行?