2013-04-27 3 views
-1

Je semble avoir eu des problèmes de manipulation de hachage de hash de hash. Ma structure de données est comme ceci:"Ne peut pas utiliser de chaîne comme un hash ref" hash de hash de hash

$atomsArray{$number}{$serial} = { 
    atom => $atom, 
    x => $x, 
    y => $y, 
    z => $z 
}; 

et entrer dans ce trouble alors que itérer atomes

for my $number(sort keys %atomsArray){ 
    for my $serial(sort keys %{$atomsArray{$number}}){ 
     #cannot iterate through x,y,z 
    } 
} 

Bien que, je voudrais obtenir x, y, z sans itérer série $, et il est important d'avoir un hachage dans un hachage, car il diffère entre quels atomes je dois calculer des atomes.

+0

Ce n'est pas que ce soit bon ou pas, je besoin d'un moyen de hachage itérer troisième niveau. –

Répondre

0

Depuis que je suis une personne stupide, je ne pouvais pas obtenir une simple itération. La réponse comment itérer hachage de hachage de hachages est:

for my $number(sort keys %atomsArray){ 
    for my $serial(sort keys %{$atomsArray{$number}}){ 
     print $atomsArray{$number}{$serial}{'x'}; 
    } 
}