use strict; use warnings; use Data::Dumper; my %hash_data = (); my $key1 = "a"; my $key2 = "1"; my $key3 = "B"; my $key4 = "_"; if (exists $hash_data{$key1}{$key2}{$key3}{$key4}) { print "exists\n"; } else { print "DOES NOT EXIST\n" } print "-----\n"; print Dumper (\%hash_data); #### DOES NOT EXIST ----- $VAR1 = { 'a' => { '1' => { 'B' => {} } } };