use strict; use warnings; use Data::Dumper; use Locale::SubCountry; my $country = new Locale::SubCountry('United States'); my @states = $country->all_codes; my @list; my %state_hash = $country->code_full_name_hash; our $subcountry = do { @list = map { { code => uc($_), name => $country->full_name }} @states; }; print Dumper(\@list);