我知道我可以创建一个数组和一个数组引用,如下所示:
my @arr = ();
my $rarr = \@arr;
然后我可以按如下方式迭代数组引用:
foreach my $i (@{$rarr}){
}
有没有办法将数组ref复制或转换为普通数组,以便我可以从函数返回它? (理想情况下,不使用foreach循环和推送)。
答案 0 :(得分:19)
你的问题有答案: - )
use warnings;
use strict;
sub foo() {
my @arr = ();
push @arr, "hello", ", ", "world", "\n";
my $arf = \@arr;
return @{$arf}; # <- here
}
my @bar = foo();
map { print; } (@bar);
答案 1 :(得分:7)
像这样:
return @{$reference};
然后你只是返回一个解除引用的引用。
答案 2 :(得分:3)
只需分配一个新数组即可复制数组:
my @copy_of_array = @$array_ref;
但是,您不需要这样做只是为了返回修改后的数组。因为它是对数组的引用,所以你需要做的就是通过引用更新数组!