2015-06-21 46 views
9

perlvar documentation有一个文本约@_如何在推送时使用Perl默认数组变量@_?

在一个子程序数组@_包含传递给 该子程序的参数。在子程序中,@_是 数组运算符push,pop,shift和unshift的默认数组。

这是使用shift而不带参数的常用方法来获取数组中的第一个元素。这是非常常用作:

sub some_method { 
    my $self = shift; # the same as `my $self = shift @_;` 

    ... 
} 

但文件中有写,它可以与push可以使用,但我无法创建工作示例没有明确指定@_的推动。从阅读本文件,我期望push 123;推到@_,但它不工作。

+1

通过'的perldoc提交这个bug perlbug' – toolic

+2

我用perbug和发送的messge。这里是我发送 - https://gist.github.com/bessarabov/2e938f4bbb79e78d1941 – bessarabov

回答

9

我相信你在文档中发现错误。

@_popshift,而不是默认pushunshift。对于pushunshift,都必须明确指定数组。

perldoc -f push示出的语法为:

push ARRAY,LIST 
push EXPR,LIST 

无可选择地离开该阵列未指定;同样适用于perldoc -f unshift

(该任择议定书提交一个Perl的bug报告;见https://gist.github.com/bessarabov/2e938f4bbb79e78d1941