use Data::Dumper; my %empty_hash = (); if (exists $empty_hash{foo}) { print "'foo' exists\n"; } if (exists $empty_hash{foo}{bar}) { print "'foo'->'bar' exists\n"; } print Dumper \%empty_hash; if (exists $empty_hash{foo}) { print "Oh look, now 'foo' exists\n"; }