Как вы уже сказали, Unicode :: String не является подходящим выбором модуля.Perl поставляется с модулем Encode, который может делать все, что вам нужно.
Если у вас есть строка символов в Perl, такая как:
my $euro = "\x{20ac}";
Вы можете преобразовать ее в строкубайты на латинице-9, такие как:
my $bytes = encode("iso8859-15", $euro);
Переменная $bytes
теперь будет содержать \ xA4.
Или вы можете заставить Perl автоматически преобразовывать его вывод в дескриптор файла следующим образом:
binmode(STDOUT, ":encoding(iso8859-15)");
Вы можете обратиться к документации для модуля Кодирование .А также, PerlIO описывает уровень кодирования.
Я знаю, что вы полны решимости игнорировать этот последний совет, но я предложу его в последний раз.Latin-9 является устаревшей кодировкой.Perl может довольно счастливо читать данные Latin-9 и конвертировать их в UTF-8 на лету (используя binmode).Вам не следует писать больше программного обеспечения, которое генерирует данные Latin-9, которые вы должны перенести из него.