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$..$/
|