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



我正试图了解一个perl脚本。其中函数是用数组的引用调用的。在这个函数中,这个数组是附加的。

所以我的第一个问题是,如果我把一些东西附加到函数中数组的引用,我会把它附加到全局数组吗?

我试着把剧本精简下来,尽可能地接近剧本。我最终得到了这个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;
}

下一个问题是为什么这个脚本不起作用?它崩溃,并显示以下错误消息:

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

您看到的错误是由行引起的

 my $array_ref = @_;

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

 my ($array_ref) = @_;

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

 my $array_ref = shift;

最新更新