hash_walk($element); sub hash_walk { my $element = shift; if(ref($element) =~ /HASH/ ) { foreach my $key (keys %$element) { if ($key =~ /field/) { # do something here? print "found $$element{$key}\n"; } hash_walk($$element{$key}); } } elsif (ref($element) =~ /ARRAY/) { foreach my $index (@$element) { hash_walk($index); } } }