Arrays 使用数组引用将数组追加到函数perl中
我正试图了解perl脚本。其中使用数组的引用调用函数。在这个函数中,这个数组被追加 所以我的第一个问题是,如果我在函数中的数组引用中附加了一些东西,我是否会将它附加到全局数组中 我试着把剧本浓缩下来,尽量贴近剧本。我最终得到了以下perl脚本:Arrays 使用数组引用将数组追加到函数perl中,arrays,perl,reference,Arrays,Perl,Reference,我正试图了解perl脚本。其中使用数组的引用调用函数。在这个函数中,这个数组被追加 所以我的第一个问题是,如果我在函数中的数组引用中附加了一些东西,我是否会将它附加到全局数组中 我试着把剧本浓缩下来,尽量贴近剧本。我最终得到了以下perl脚本: #!/usr/bin/perl use strict; my @array = (); my $i = 0; while ($i < 11) { fun(\@array); $i++; } print @array , "\
#!/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;
}
您看到的错误是由线路引起的
my $array_ref = @_;
在标量上下文中,普通数组返回其长度,因此$array\u ref
是1
,而不是对@array
的引用。在下一行中,perl抱怨,因为您无法取消引用1
。从@(或任何其他数组)赋值时,请使用列表上下文:
my ($array_ref) = @_;
或者,在这种情况下,您可以使用shift
:
my $array_ref = shift;
您看到的错误是由线路引起的
my $array_ref = @_;
在标量上下文中,普通数组返回其长度,因此$array\u ref
是1
,而不是对@array
的引用。在下一行中,perl抱怨,因为您无法取消引用1
。从@(或任何其他数组)赋值时,请使用列表上下文:
my ($array_ref) = @_;
或者,在这种情况下,您可以使用shift
:
my $array_ref = shift;
如果打印“@array\n”
,则输出中的元素将被空格很好地分隔如果打印“@array\n”
,则输出中的元素将被空格很好地分隔