in reply to hashes of hashes

Hi valavanp,

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); }

s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/