我怎么能用`\ sort ...`?

Ren*_*ger 5 perl reference

我想知道什么\sort ...回报.

执行以下行后

my $y = \sort qw(one two three four five);
Run Code Online (Sandbox Code Playgroud)

$y是对标量的引用.我实际上期望对数组的引用:具有已排序元素的数组(五,四,一,三,二).当解除引用$y(例如print $$y)时,我得到two了排序列表的最后一个元素.

我可以用到有用的东西\sort(...)吗?

Håk*_*and 5

根据perldata将标量分配给值列表,将列表的最后一个值分配给标量.所以

$foo = ('cc', '-E', $bar);
Run Code Online (Sandbox Code Playgroud)

将变量的值赋给$bar标量变量$foo.

根据perlref,对枚举列表的引用与创建引用列表相同.因此,

my $y = \sort qw(one two three four five);
Run Code Online (Sandbox Code Playgroud)

相当于

my $y = \(sort qw(one two three four five));
Run Code Online (Sandbox Code Playgroud)

这相当于

 my $y = \(sort qw(one two three four five))[-1];
Run Code Online (Sandbox Code Playgroud)

它将引用已排序列表的最后一个值,即标量值"two".


mob*_*mob 4

sort返回一个列表。

\LIST(like \($x,$y,42)) 生成另一个列表,其中包含对原始列表中每个元素的引用(\$x,\$y,\42)

因此\sort ...返回对排序列表元素的引用。

现在在标量上下文中,$foo = LIST分配列表的最后一个元素。总而言之,

my $y = \sort qw(one two three four five);
Run Code Online (Sandbox Code Playgroud)

将对最后一个排序元素的引用分配给$y, 或

print $$y;        # "two"
Run Code Online (Sandbox Code Playgroud)

我想不出该功能有什么好的用例,但这并不能很好地证明该功能不存在。