2011-04-01 73 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}; 

你然後就返回一個取消引用的參考。

相關問題