Все блестящие ответы. Но на самом деле никто не работал. Размещение расширенных символов непосредственно в исходном коде вызывало проблемы при работе в окнах терминала или различных редакторах кода / текста на разных платформах. Мне удалось опробовать Unicode :: Normalize, Text :: Unidecode и Text :: Unaccent, но я не смог заставить никого из них делать именно то, что я хочу.
В конце я просто перечислил все символы, которые хотел транслитерировать сам для UTF-8 (это наиболее часто встречающаяся кодовая страница в моих входных данных).
Мне понадобились две дополнительные замены, чтобы позаботиться о æ и Æ, которые я хочу сопоставить двум символам
Для заинтересованных сторон окончательный код: (tr - одна строка)
$word =~ tr/\xC0\xC1\xC2\xC3\xC4\xC5\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF
\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD8\xD9\xDA\xDB\xDC\xDD\xE0\xE1\xE2\xE3\xE4
\xE5\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF8
\xF9\xFA\xFB\xFC\xFD\xFF/AAAAAACEEEEIIIIDNOOOOOOUUUUYaaaaaaceeeeiiiionoo
oooouuuuyy/;
$word =~ s/\xC6/AE/g;
$word =~ s/\xE6/ae/g;
$word =~ s/[^\x00-\x7F]+//g;
Поскольку такие вещи, как Ď, не являются частью UTF-8, они не так часто встречаются в моих входных данных. Для входа не в формате UTF-8, я решил потерять все, что выше 127.