#!/usr/bin/env perl -l use strict; use warnings; my @ValidLocations = ('Lynnwood','Edmonds'); my $ref = { 'US/Seattle/WA' => ['Smith','Eric','Sam'], 'US/WA/Lynnwood' => ['John','Chuck','Ram','Lynda'], 'US/WA/Everette' => ['Sun','Rick','Raj'], 'US/Edmonds/WA' => ['Ken','Josh','Matt'], 'IN/Banglore/KA' => ['Anil','Dada','Kaka'] }; my $re = '^US.+?(?:' . join('|' => @ValidLocations) . ')'; my @valid_us_people = map { @{$ref->{$_}} } grep { /$re/ } keys %$ref; print "@valid_us_people"; #### John Chuck Ram Lynda Ken Josh Matt