Perl. Есть ли изящный способ валидации utf-8?

Задача проверить документ на корректность. Читать буферами определённого размера, потому-что данные не доверенные( вдруг там нету символов конца строки ). Раз мы читаем буферами из-за этого возможны битые символы utf-8. Значит нужно читать символами указав соответствующую кодировку, при открытии файла. Далее нужно проверить на валидность utf-8 и в случае ошибки вывести смещение битого символа в файле. Как это изящно реализовать? Такой мощный язык и всё через какие-то диковатые костыли.


Ответы (1 шт):

Автор решения: user384378
open( my $fh, '<:encoding(UTF-8)', $file ) or die $!;

while( read($fh, $buf, $size) ) {
    # Изящно и логично было бы здесь,
    # перехватывать исключения слоя.
    # В этом случае читаются целые символы
    # и есть возможность отслеживать реально битые.     
}

Но увы это невозможно. Вместо этого надо городить какие-то подпорки...

→ Ссылка