我正在学习perl,想调用一个函数,并将2个参数传递给它, 这是代码:
use strict;
use warnins;
sub test
{
my ($item) = @_;
print "$item\n";
}
test("hello world");
结果是:世界你好
如果我将代码更改为这样:
my $item = @_;
那么结果是:1
产生差异的原因是什么?有点困惑 我知道@_是调用它时传递给函数test的参数,它是字符串“ hello world”,那么为什么在将@_分配给$ item之后,结果为1,似乎数组@_的长度却是($ item)是参数本身,
答案 0 :(得分:2)
有两种不同的赋值运算符,标量赋值运算符和列表赋值运算符。如果=
左侧是列表,哈希,数组或切片,则为列表分配。否则,它是一个标量分配。
标量赋值给出其正确的操作数标量上下文。在标量上下文中,数组的计算结果为数组中元素的数量。