my %states_by_country; for (@logfiles) { my $country_state = $_; # Avoid clobbering @logfiles $country_state =~ s/.txt//; $country_state =~ s/_/ /g; my ($country, $state) = split(/-/, $country_state, 2); push @{ $states_by_country{$country} }, $state; } for my $country (sort keys %states_by_country) { print(uc($country), "\n"); my $states = $states_by_country{$country}; for my $state (sort @$states) { print($state, "\n"); } }