in reply to Re: Array of Array of Hashes
in thread Array of Array of Hashes
...you know, now that I think about it, I have to agree with what twerq and dpuu said originally: We need to see your initialization code.
In this example from DamnDirtyApe, the initial attempt to refer to the data is identical to your original. $kid[0][0]{name} is the same as: $AoAoH[0][0]{name}
As long as you always refer to your data in this fashion (using a formally named variable "kid" or "AoAoH" you can treat the data structure as if it were in fact a simple multi-dimensioned construct. It is when you try to iterate through the individual data items that you have to be aware that the array named "kid" is simply an array of references (or pointers to you C programmers).
So if you decided to do something like:
foreach $class (@kids) { # inspect each top level (class) array # here, $class is a reference to an array, so... foreach $student (@$class) { # here, $student is a reference to a hash, so... print "$student->{'name'}\n"; # or you can iterate: foreach $fact (keys %{$student}) { # note that protecting $student with surrounding # curly braces will make keys() a lot happier # I like to pronounce the construct as: # "The hash to which $student refers" # and we may now print: print "$fact: $student->{$fact}\n"; # or if you are in a particularly perverse mood, you may say: print "$fact: $$student{$fact}\n"; # if you DO find yourself in that mood though, consider # adjusting your meds! :-) } } }
...all the world looks like -well- all the world, when your hammer is perl.
---v
|
|---|