Сабж: http://habrahabr.ru/post/190584/
Мопед не мой. ИМХО, на рисунке флаги нужно было пониже поместить.
Для труЪ:
1. Не пользуйтесь (если вы точно не знаете, что делаете) следующими функциями: utf8::is_utf8, Encode::_utf8_on, Encode::_utf8_off, и всеми функциями из модуля bytes (документация ко всем этим функциям не рекомендует их использование, кроме как для отладки)
2. Пользуйтесь utf8::upgrade, utf8::downgrade, всякий раз, когда этого требует спецификация Perl
3. Для конвертации из символов в байты пользуйтесь Encode::encode, Encode::decode
3. Если используете чужой код, нарушающий эти правила, проверьте его на наличие багов, применяйте workaroundы.
4. При работе с именами файлов, либо придётся использовать wrapper над всеми функциями, либо, с помощью тестов убедиться, что внутреннее представление имён файлов не меняется в процессе работы кода.