Here is an example of how you could recurse through a structure of hash references in practice.
It uses the ref function to determine whether a given level is a hash reference.
use Modern::Perl;
my %ref_chain = (
'key1' => {
'key2' => {
'key3' => 'not a reference'
}
},
'key4' => {
'key5' => 'no ref here'
}
);
sub traverse_hashes {
my $hashref = shift;
foreach my $key (keys %$hashref)
{
if (ref $hashref->{$key} eq 'HASH')
{
say "$key is a hash ref. Recursing.";
traverse_hashes($hashref->{$key});
}
else
{
say "$key is not a hash ref (value: $hashref->{$key})";
}
}
}
traverse_hashes(\%ref_chain);
When's the last time you used duct tape on a duct? --Larry Wall