use strict; use warnings; # initializing hash with three four-value pairs, among those two are having inner hashes ( Numerals, Alpha ) which have three key-value pairs in-built my %hash = ( 'Numerals' => { '1' => 'One', '2' => 'Two', '3' => 'Three', }, 'Alpha' => { 'A' => 'Apple', 'B' => 'Ball', 'C' => 'Cat' }, 'I' => 'Roman One', 'II' => 'Roman Two' );
# for getting key-value pairs of above hash foreach(keys%$hash) { # by default key stored in $_ as per above foreach statement # checks whether value of hash is another hash if(ref($hash{$_}) eq 'HASH') { # iterate the keys set of inner hash foreach my $inner_key (keys%{$hash{$_}}) { # printing key and value of inner hash print "Key:$inner_key and value:$hash{$_}{$inner_key}\n"; } } else { print "Key: $_ and Value: $hash{$_}\n" } }