我想知道\sort ...
返回什么。
执行以下行
my $y = \sort qw(one two three four five);
$y
是对标量的引用。我实际上期望对数组的引用:具有已排序元素的数组(五,四,一,三,二)。解除引用$y
(例如print $$y
)时,我得到two
,这是排序列表的最后一个元素。
\sort(...)
有什么用处吗?
答案 0 :(得分:5)
根据perldata将标量分配给值列表,将列表的最后一个值分配给标量。所以
$foo = ('cc', '-E', $bar);
将变量$bar
的值赋给标量变量$foo
。
根据perlref, 引用枚举列表与创建引用列表相同。因此,
my $y = \sort qw(one two three four five);
相当于
my $y = \(sort qw(one two three four five));
相当于
my $y = \(sort qw(one two three four five))[-1];
将引用已排序列表的最后一个值,即标量值" two"。
答案 1 :(得分:4)
sort
会返回一个列表。
\LIST
(如\($x,$y,42)
)生成另一个列表,其中包含对原始列表(\$x,\$y,\42)
的每个元素的引用。
因此\sort ...
返回对排序列表元素的引用。
现在在标量上下文中,$foo = LIST
指定列表的最后一个元素。完全放在这一点,
my $y = \sort qw(one two three four five);
将对最后排序元素的引用分配给$y
或
print $$y; # "two"
我想不出这个功能的任何好的用例,但这不是一个不存在的非常好的证据。