Как сказал Брайан, его внутренне UTF-8 в Perl. Perl преобразует его, хотите вы этого или нет.
Хитрость связана с флагом UTF8, который является битовым флагом, прикрепленным к каждой строке. Для данных, которые возвращает XML :: Parser, устанавливается флаг UTF8.
Если вы хотите избавиться от этого поведения, снимите флаг UTF8. Один из способов сделать это можно так:
sub de_utf8 {
use bytes;
return "$_[0]";
}
Таким образом, полученная строка будет иметь те же байтовые данные, что и исходная строка.
РЕДАКТИРОВАТЬ: немного не в тему ОП ... извините.