use Locale::Codes::Language 'code2language'; use Locale::Codes::Country 'code2country'; for (`locale -a`) { chomp; my ($lang,$terr) = /^(\w+)_(\w+)\b/; print "$_ - ",code2language($lang)//'(unknown)', " - ",code2country($terr)//'(unknown)',"\n"; }