%cat = ( 'C[AEIOU]NWAY' => 'AAA', '(?:BOSTON|CHICAGO)' => 'BBB', '(?:LAS VEGAS|NEVADA)' => 'CCC', '(?:DALLAS|AUSTIN)' => 'DDD', '(?:NASHVILLE|M[AEIOU]MPHIS)' => 'EEE' ); $var = "CHICAGO"; @keys = keys %cat; $re = "(".join(")|(", @keys).")"; if ($var =~ /$re/o) { for ( 1 .. @keys) { print "$_:", $$_, " - ", $keys[$_-1], "\n" if defined $$_ } }