in reply to hashes of hashes
In such situations, I find it helpful to use Data::Dumper to see what the data really looks like (if necessary), and then break the final dereference into multiple lines for clarity and simplicity, as well as ease-of-use for further operations:
use Data::Dumper; %people=( 'Jones'=>{'name'=>'Alison', 'age'=>15, 'pet'=>'dog',}, 'Smith'=>{'name'=>'Tom', 'age'=>34, 'pet'=>'cat',}); foreach $person (keys %people) { my $person_attributes = $people{$person}; # Use Data::Dumper here to be *sure* of the data format # of the variable $person_attributes. # # printf "Person attributes: %s\n", Dumper(\$person_attributes); # Display the values ... my @attributes = values %$person_attributes; printf "Attributes: %s\n", join(",", @attributes); # ... or make use of one or more attributes ... my $age = $person_attributes->{'age'}; do_something_with_age($age); # Process this person's age # ... or process all of the attributes together do_something_with_this_person($person_attributes); }
|
|---|