(变量)= @_和变量= @_有什么区别

时间:2019-07-06 02:36:56

标签: perl parameter-passing

我正在学习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)是参数本身,

1 个答案:

答案 0 :(得分:2)

有两种不同的赋值运算符,标量赋值运算符和列表赋值运算符。如果=左侧是列表,哈希,数组或切片,则为列表分配。否则,它是一个标量分配。

标量赋值给出其正确的操作数标量上下文。在标量上下文中,数组的计算结果为数组中元素的数量。