[Moscow.pm] Где в модуле писать use utf8

Maxim Vuets maxim.vuets на gmail.com
Чт Июн 13 00:13:13 PDT 2013


2013/6/13 Dmitry L. <dim0xff на gmail.com>:
> Привет!
>
> Возник вопрос, а где правильно (не с точки зрения синтаксиса, а вообще) и
> нагляднее писать use utf8 в файле с модулем?
> 1. до package My::Module;
> 2. после package My::Module;

Прагма utf8 имеет лексическую область видимости. Объявите до --- будет
на файл. После --- на пакет.

Я предпочитаю писать до, потому что в файле может быть несколько
пакетов, а код пакетов едва ли будет записан в разных кодировках (весь
файл должен быть в единой кодировке).

> Считаем, что модули не сами по себе, а часть какого-то приложения, которое
> утф8.

Это утверждение непонятно. Что значит "приложение утф8"?

На всякий случай: прагма utf8 сообщает о кодировке файла с исходным
кодом, а не о кодировке данных, с которыми потом работает приложение.
Смотрите `perldoc utf8`.

> Вопрос появился после того, как взглянул на файлы, которые создаются с
> помощью DBIC::Schema::Loader::_dump_to_dir
>
> Там почему-то так:
> -----------------------------------------------
>     my $schema_text =
>           qq|use utf8;\n|
>         . qq|package $schema_class;\n\n|
>         . qq|# Created by DBIx::Class::Schema::Loader\n|
>         . qq|# DO NOT MODIFY THE FIRST PART OF THIS FILE\n\n|;
> -----------------------------------------------
>

Вероятно в этот файл потом пишется UTF-8 текст, например, строковые
DEFAULT значения схемы.

>
> --
> //wbr, Dmitry L.
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>


Подробная информация о списке рассылки Moscow-pm