my %states_with_comments = map { ((split /=/, $$_[0], 2)[1], 'hurray!') } grep { $$_[2] } map { values %$_ } values %$db; print "states are: ", (join "; ", sort, keys %states_with_comments), "\n"; #### root@orion:/tmp# ./mytest.pl states are: West Virginia; Washington #### my %states_with_comments = # and finnaly we will take keys from hash map { ((split /=/, $$_[0], 2)[1], 'hurray!') } # split first element on satename= and name, take name, make %key => 'hurray!" grep { $$_[2] } # test if array has 3-rd element that is comment map { values %$_ } # take arrays that are below PR, AK, WA, WV values %$db; # make list of hashes below numbers 99155, 26134 #### my %states_with_comments = grep { warn Dumper({"finally" => $_}); 1; } map { ((split /=/, $$_[0], 2)[1], 'hurray!') } grep { warn Dumper({"after filtering" => $_}); 1; } grep { $$_[2] } grep { warn Dumper({"second step is" => $_}); 1; } map { values %$_ } grep { warn Dumper({"first step is" => $_}); 1; } values %$db; #### root@orion:/tmp# ./mytest.pl $VAR1 = { 'first step is' => { 'PR' => [ 'state_name=Puerto Rico', 'county_names_all=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 +n|Adams', 'comments=America/Los_Angeles' ] } }; $VAR1 = { 'first step is' => { 'WV' => [ 'state_name=West Virginia', 'county_names_all=Wirt|Wood|Jackson|Ritchie| +Calhoun', 'comments=America/New_York' ] } }; $VAR1 = { 'second step is' => [ 'state_name=Puerto Rico', 'county_names_all=Adjuntas|Utuado' ] }; $VAR1 = { 'second step is' => [ 'state_name=Alaska', 'county_names_all=Ketchikan Gateway|Prince of + Wales-Hyder' ] }; $VAR1 = { 'second step is' => [ 'state_name=Washington', 'county_names_all=Pend Oreille|Spokane|Lincol +n|Adams', 'comments=America/Los_Angeles' ] }; $VAR1 = { 'second step is' => [ 'state_name=West Virginia', 'county_names_all=Wirt|Wood|Jackson|Ritchie| +Calhoun', 'comments=America/New_York' ] }; $VAR1 = { 'after filtering' => [ 'state_name=Washington', 'county_names_all=Pend Oreille|Spokane|Lincol +n|Adams', 'comments=America/Los_Angeles' ] }; $VAR1 = { 'after filtering' => [ 'state_name=West Virginia', 'county_names_all=Wirt|Wood|Jackson|Ritchie| +Calhoun', 'comments=America/New_York' ] }; $VAR1 = { 'finally' => 'Washington' }; $VAR1 = { 'finally' => 'hurray!' }; $VAR1 = { 'finally' => 'West Virginia' }; $VAR1 = { 'finally' => 'hurray!' }; states are: West Virginia; Washington