2011-04-01 22 views
10

Bir diziyi aşağıdaki gibi bir dizi ve bir referans oluşturabileceğimi biliyorum: Perl'deki bir diziye dizi referansı nasıl dönüştürülür?

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

Sonra aşağıdaki gibi dizi referansı üzerinde yineleme yapabilirim:

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

} 

Kopyalama veya dönüştürme için bir yol var mı Dizi normal bir diziye ref, böylece bir işlevden dönebilir miyim? (İdeal olarak bu foreach döngüsünü ve bir itme kullanmadan).

+1

:-) sorunuzu cevabım var. (Ancak, bir dizinin içerdiği listeyi döndürebilirsiniz) – tadmc

cevap

14

Sen Perl bir diziyi döndüremez

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

sadece yeni bir diziye atayarak diziyi kopyalayabilirsiniz. Diziye referans olduğundan, diziyi referans yoluyla güncellemek, yapmanız gereken tek şey! Bunun gibi

5

:

return @{$reference}; 

O zaman sadece bir dereferenced başvuru getiriyorduk.

İlgili konular