#!/usr/bin/perl use utf8; use Modern::Perl; use Data::Dumper; my $db = { '99155' => { 'PR' => { state_name => 'Puerto Rico', county_names_all => [qw{Adjuntas Utuado}], }, 'AK' => { state_name => 'Alaska', county_names_all => ['Ketchikan', 'Gateway', 'Prince of + Wales-Hyder'], }, 'WA' => { state_name => 'Washington', county_names_all => ['Pend Oreille', 'Spokane', 'Lincol +nAdams'], comments => 'America/Los_Angeles' } }, '26134' => { 'WV' => { state_name => 'West Virginia', county_names_all => ['Wirt', 'Wood', 'Jackson', 'Ritchie', 'Calhoun'], comments => 'America/New_York' } } }; my %states_with_comments = map { ($$_{state_name}, 'hurray!') } grep { $$_{comments} } map { values %$_ } values %$db; print "states are: ", (join "; ", sort, keys %states_with_comments), "\n";