在里面 perlvar文档 有一个关于的文字 @_
:
在子例程中,数组@_包含传递给的参数
那个子程序。在子程序中,@ _是默认数组
数组运算符push,pop,shift和unshift。
这是一种常用的使用方式 shift
没有参数从数组中获取第一个元素。它经常被用作:
sub some_method {
my $self = shift; # the same as `my $self = shift @_;`
...
}
但在文档中写道,它可以使用 push
,但我没有明确指定就无法创建工作示例 @_
推动。从阅读这篇文档,我期待 push 123;
推动 @_
,但它不起作用。
我相信你在文档中发现了一个错误。
@_
是默认值 pop
和 shift
,但不是 push
和 unshift
。对彼此而言 push
和 unshift
,必须明确指定数组。
perldoc -f push
将语法显示为:
push ARRAY,LIST
push EXPR,LIST
没有选择不指定数组;同样的 perldoc -f unshift
。
(OP提交了一个Perl错误报告;请参阅 https://gist.github.com/bessarabov/2e938f4bbb79e78d1941)
更新:
这已得到纠正。在Perl的git repo中,它在提交中得到了纠正 256ca3d37ed232e10fbb2884be45691e745be7a9
,2015-06-21。修复程序出现在版本5.23.1和5.24.0中。这似乎没有在任何一个中提及 perldelta*.pod
文件。