如何将数组引用转换为Perl中的数组?
问题描述:
我知道我可以按如下方式创建数组和数组的引用:如何将数组引用转换为Perl中的数组?
my @arr =();
my $rarr = \@arr;
然后我可以在数组引用遍历如下:
foreach my $i (@{$rarr}){
}
有没有办法复制或将数组转换为一个正常的数组,所以我可以从函数返回它? (理想情况下不使用foreach循环和推送)。
答
你:-)
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);
答
你可以简单地将其分配给新的数组的数组复制:
my @copy_of_array = @$array_ref;
,但你并不需要做的,只是返回修改后的数组。由于它是对数组的引用,因此只需通过引用更新数组即可!
答
像这样:
return @{$reference};
你然后就返回一个取消引用的参考。
在你的问题的答案你不能在Perl返回数组。 (然而,你可以返回一个数组包含的列表) – tadmc 2011-04-01 21:29:40