2011-04-01 13 views
10

sé que puedo crear una matriz y una referencia a un array de la siguiente manera:¿Cómo convertir una referencia de matriz a una matriz en Perl?

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

puedo continuación, iterar sobre la referencia a la matriz de la siguiente manera:

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

} 

¿Hay una manera de copiar o convierta la matriz ref a una matriz normal para que pueda devolverla desde una función? (Idealmente sin usar ese bucle Foreach y un empuje).

+1

No se puede devolver una matriz en Perl. (Sin embargo, puede devolver la lista que contiene una matriz) – tadmc

Respuesta

14

usted tiene la respuesta en su pregunta :-)

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

puede copiar la matriz simplemente mediante la asignación de una nueva matriz:

my @copy_of_array = @$array_ref; 

PERO, usted no necesita hacer eso sólo para devolver la matriz modificada. ¡Ya que es una referencia a la matriz, la actualización de la matriz a través de la referencia es todo lo que necesita hacer!

5

De esta manera:

return @{$reference}; 

que estés a continuación, sólo devolviendo una referencia sin referencia.

Cuestiones relacionadas