如何在Perl中将数组引用转换为数组?

时间:2011-04-01 14:24:43

标签: perl

我知道我可以创建一个数组和一个数组引用,如下所示:

my @arr = ();
my $rarr = \@arr;

然后我可以按如下方式迭代数组引用:

foreach my $i (@{$rarr}){

}

有没有办法将数组ref复制或转换为普通数组,以便我可以从函数返回它? (理想情况下,不使用foreach循环和推送)。

3 个答案:

答案 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;

但是,您不需要这样做只是为了返回修改后的数组。因为它是对数组的引用,所以你需要做的就是通过引用更新数组!