Просто чтобы заметить: use utf8
просто говорит Perl, что вы использовали Unicode (широкие) символы в вашем источнике. Больше ничего не делает. Однако с любыми данными, которые вы извлекаете из других источников, вы должны быть уверены, что они закодированы в UTF-8, и что вы указываете всем адресатам вывода, что они должны ожидать UTF-8.
Когда что-то не так с вашими строками UTF-8, есть много мест, где это могло бы пойти не так, поэтому начните проверять спереди назад, чтобы убедиться, что это UTF-8 на протяжении всего процесса. Это может означать выяснение того, как перевести Latin-1, который вы можете получить с веб-страницы, в UTF-8. Encode и Encode :: FixLatin полезны. Советы Juerd's Perl Unicode тоже очень полезны.
Моя последняя книга, Эффективное программирование на Perl, 2-е издание , посвятит целую главу этим вопросам. Из-за всех этих проблем писать не особенно забавную главу, но как только вы разберетесь со всеми частями, это станет намного более понятным. Тем не менее, выход в марте не поможет вам сегодня. (