use strict; use warnings; my %locations = ( USA => { NY => '212', NJ => '973' }, ENG => { LDN => '44', CVT => '20' } ); foreach (keys %locations) { process_article(\%{$locations{$_}}); } sub process_article { my $hash = shift @_; print "$_ $hash->{$_}\n" foreach (keys %$hash); }