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); }
In reply to Re: hashes of hashes
by liverpole
in thread hashes of hashes
by valavanp
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |