use Data::Dumper; print Dumper \%hash; print safe_defined(\%hash,"test","test2"); print Dumper \%hash; sub safe_defined { my ($h,@keys) = @_; for(@keys) { return 0 unless defined $h->{$_}; $h = $h->{$_}; } return 1; }