use strict; my %s; sub rexists (\%;@) { my ($href, @values) = @_; for (@values) { return 0 unless ref($href); return 0 unless exists $href->{$_}; $href = $href->{$_}; } return 1; } print rexists(%s,qw(a b c)),"\n"; $s{a}{b}{c} = 1; print rexists(%s,qw(a b c)),"\n";