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

cho*_*hki 14 perl

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

my @arr = ();
my $rarr = \@arr;
Run Code Online (Sandbox Code Playgroud)

然后,我可以迭代数组引用,如下所示:

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

}
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*Mat 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);
Run Code Online (Sandbox Code Playgroud)


Pau*_*ham 7

像这样:

return @{$reference};
Run Code Online (Sandbox Code Playgroud)

然后,您只需返回一个解除引用的引用.