2010-09-23 13 views

risposta

30

Questo aggiungerà valore alla fine della matrice memorizzata in hash con il tasto "TEST1".

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

Ho usato @{...} per riferimento ad array di riferimento. Perl crea automaticamente il riferimento dell'array interno quindi necessario.

8

La funzione push prende un array, quindi è necessario deferenza di nuovo in un array:

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

Inoltre, il tuo stile mi fa pensare che non si utilizza il pragma strict. Un modo migliore per scrivere che il codice è:

#!/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

Ora avete un hash di array di array. – mkb

+0

@ Matt Kane Sì, l'ho notato quando sono tornato a dare il meglio. –

1

Penso che si desidera:

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

Ora, $ TEST {} TEST1 dovrebbe essere equivalente a ["some value", "some other value"].

-5

in questo Perl poi guardare qui e non preoccuparti per l'indice Perl push function reference

+1

Il tuo link non indirizza riferimenti o hash a più livelli. Questa è la parte confusa. – mkb

Problemi correlati