2011-04-01 31 views
10

我知道我可以按如下方式创建数组和数组的引用:如何将数组引用转换为Perl中的数组?

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

然后我可以在数组引用遍历如下:

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

} 

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

+1

在你的问题的答案你不能在Perl返回数组。 (然而,你可以返回一个数组包含的列表) – tadmc 2011-04-01 21:29:40

回答

14

你:-)

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); 
3

你可以简单地将其分配给新的数组的数组复制:

my @copy_of_array = @$array_ref; 

,但你并不需要做的,只是返回修改后的数组。由于它是对数组的引用,因此只需通过引用更新数组即可!

5

像这样:

return @{$reference}; 

你然后就返回一个取消引用的参考。

相关问题