【发布时间】:2014-08-29 03:26:49
【问题描述】:
我可能遗漏了一些明显的东西,但我不知道为什么下面的 Perl 通过 grep 创建数组引用,而不是 sort 或其他一般引用?
print @$arr; # no output
print ref $arr; # no output
print scalar @$arr; # no output
print ref $arr; # no output
print sort @$arr; # no output
print ref $arr; # no output
print grep { 0 } @$arr; # no output
print ref $arr; # ARRAY
我可能遗漏了一些明显的东西,或者可能只是其中之一,但这让我很困惑,我想知道是否有人知道答案......
我已经在 Perl 5.8 和 5.10 上对此进行了测试,并且在两者上都获得了相同的行为。
【问题讨论】:
-
我认为你所拥有的是 Perl 中的一个错误。
-
...但我认为这绝不是 Perl 中的错误!
-
请注意,
scalar导致绝对没有代码。它只是更改其操作数上的上下文标志。这是最不寻常的功能之一,所以不是一个很好的例子! -
哦,Perl 有plenty of bugs :-)
-
啊,有道理。我最初认为它是取消引用
undef值导致创建数组,但很惊讶之前没有看到这个......
标签: perl