# Make a hash of regions, pointing to an array of states in each region. # use qw() to quote words. # Use _ for spaces, replace with space when turning hash inside out. my %regions = ( southern => [ qw( Alabama Georgia Tennessee West_Virginia ) ], western => [ qw( Oregon Washington California Idaho Montana )], # ... ); # Turn %regions inside out. my %states; # Winds up with data like $states{Oregon} = western foreach my $region (keys %regions) { foreach (@$regions{$region}) { # Copy the state list s/_/ /g; # replace _ with spaces. West_Virginia becomes West Virginia $states{$_} = $region # Store the state info. } }