sub nested_lookup { my $node = shift; while (ref($node) and @_) { $node = $node->{ shift(@_) }; } return @_ ? undef : $node; } #### my $elem = nested_lookup(\%hash, split /\./, 'a.b.c.d');