我试图绕过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;
}
接下来的问题是为什么这个脚本不起作用? 它崩溃时出现此错误消息:
Can't use string ("1") as an ARRAY ref while "strict refs" in use at trial.pl line 17.
答案 0 :(得分:5)
您看到的错误是由行
引起的 my $array_ref = @_;
在标量上下文中,普通数组返回其长度,因此$array_ref
为1
,而不是对@array
的引用。在下一行中,perl会抱怨,因为您无法取消引用1
。从@_
(或任何其他数组)分配时,请使用list context:
my ($array_ref) = @_;
或者,在这种情况下,您可以使用shift
:
my $array_ref = shift;