use utf8;
только (и только) для одной вещи.Когда вы будете использовать в своем исходном коде utf8 символов.Например:
my $utf8str = "αΩ";
Для любых других значений, например:
my $data = MyModule::get_some_data();
, следует использовать
my $utf8data = Encode::decode_utf8($data);
В случае, когда ваши get_some_data возвращают октеты(байты).
Например, при чтении текстовых файлов вы можете указать преобразование perl utf8 на уровне ввода-вывода с помощью,
open($fd, "<", $filename);
$fd->binmode(:utf8); #for marking data as utf8, or
$fd->binmode(:encoding(utf8)); #for marking *and* checking data for utf8 validity too.
Или вы можете использовать открытую прагму для передачи perl с использованием utf8.по умолчанию на уровне ввода-вывода
use open(:std :utf8);
Здесь нет короткого ответа.Вы действительно должны читать:
Perl чрезвычайно силен в обработке utf8, но вы должны знать, как правильно его использовать - к сожалению, вотнет более короткого пути, чем RTFM ...
И обратите внимание: здесь есть различия в обработке utf8 в perl <5.6, 5.6, 5.8, 5.12, 5.14 ... </p>