使用数组的引用将数组附加到函数perl中

joh*_*ohn 1 arrays perl reference

我试图绕过一个perl脚本.使用数组引用调用funnction的位置.在此函数中,将附加此数组.

所以我的第一个问题是,如果我在函数中附加某个数组的引用,我是否将它附加到全局数组?

我试图将脚本煮沸,并试图尽可能接近脚本.我最终得到了这个perl脚本:

#!/usr/bin/perl

use strict;

my @array = ();
my $i = 0;

while ($i < 11) {
    fun(\@array);
    $i++;
}

print @array , "\n";

sub fun {
    my $array_ref = @_;
    push @{$array_ref}, $i;
}
Run Code Online (Sandbox Code Playgroud)

接下来的问题是为什么这个脚本不起作用?它崩溃与此错误消息:

Can't use string ("1") as an ARRAY ref while "strict refs" in use at trial.pl line 17.
Run Code Online (Sandbox Code Playgroud)

use*_*889 5

您看到的错误是由线路引起的

 my $array_ref = @_;
Run Code Online (Sandbox Code Playgroud)

在标量上下文,一个普通的数组返回其长度,所以$array_refIS 1,而不是一个来引用@array.在下一行中,perl会抱怨因为你无法取消引用1.从@_(或任何其他数组)分配时,使用列表上下文:

 my ($array_ref) = @_;
Run Code Online (Sandbox Code Playgroud)

或者,在这种情况下,您可以使用shift:

 my $array_ref = shift;
Run Code Online (Sandbox Code Playgroud)