use Data::Dumper; $hash{a1}{b1} = 'c1'; $hash{a1}{b2} = 'c2'; $hash{a2}{b1} = 'c3'; $hash{a2}{b3} = 'c4'; print Dumper(\%hash); foreach $key (keys %hash){ print "Key:\t$key\n"; my %subHash = %{$hash{$key}}; print "\tSubkeys:"; foreach $subkey (keys %subHash){ print "\t$subkey"; } print "\n"; }