use utf8;
сообщает Perl, что текущий файл закодирован с использованием UTF-8.
У вас есть сценарий, который закодирован с использованием UTF-8, поэтому вам пришлось добавить use utf8;
к сценарию. (Без этого вы можете подумать, что у вас есть my $x = "é";
, но вы говорите Perl my $x = "é";
.)
Добавление его в модуль не имеет смысла, если это скрипт, который закодирован с использованием UTF-8. Директива должна быть добавлена к каждому файлу (скрипту или модулю), который закодирован с использованием UTF-8. (Если вы передадите плохой $x
в модуль, и из-за этого модуль создаст ненужные файлы, это все еще сценарий, который необходимо исправить.)