2010-09-23 24 views

Respuesta

30

Esto agregará valor al final de la matriz almacenada en hash con la tecla "TEST1".

push(@{ $TEST { TEST1 } }, "some value "); 

He usado @{...} a eliminar la referencia de referencia de matriz. Perl crea una referencia de matriz interna automáticamente necesaria.

8

La función push toma una matriz, por lo que debe deferencia de nuevo en una matriz:

push @{$TEST{TEST1}}, "some value"; 

Además, su estilo me hace pensar que no está utilizando el pragma strict. Una mejor manera de escribir que el código es:

#!/usr/bin/perl 

use strict; 
use warnings; 

sub atest { 
    my $test = shift; 
    push @{$test->{TEST1}}, "some value"; 
} 

my %test; 
atest(\%test); 

use Data::Dumper; 

print Dumper \%test; 
+0

Ahora usted tienen un hash de matrices de matrices. – mkb

+0

@ Matt Kane Sí, me di cuenta de eso cuando volví a completarlo. –

1

Creo que desee:

%TEST; 
$TEST{TEST1}[0] = "some value" 
push @{ $TEST{TEST1} }, "some other value" 

Ahora, $ {TEST} PRUEBA1 debe ser equivalente a ["some value", "some other value"].

-5

esta Perl y luego mirar aquí y no se preocupe por el índice Perl push function reference

+1

Su enlace no aborda referencias o hashes de varios niveles. Esa es la parte confusa. – mkb

Cuestiones relacionadas