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

Vladimir Timofeev vovkasm на gmail.com
Пн Июн 17 06:00:46 PDT 2013


2013/6/17 Ilya Chesnokov <chesnokov.ilya на gmail.com>:
>
> 16 июня 2013 г., 8:44 пользователь Иван Бессарабов <ivan на bessarabov.ru>
> написал:
>
>> > Мой типичный boilerplate такой:
>> > ...
>> >  use autodie qw<:all>;
>>
>> Вот тут пишут что это сильно замедляет работу:
>>
>>
>> http://blogs.perl.org/users/vyacheslav_matjukhin/2013/06/dont-copy-use-autodie-in-every-module.html
>>
>
> Насколько я понял, не работу, а скорость запуска приложения.

Ага, тогда померяйте сами ;-)
#!perl
use Benchmark ':all';

{
    use autodie;
    timethese(-2, { 'autodie on' => sub { chdir '/tmp' } });
}

{
    no autodie;
    timethese(-2, { 'autodie off' => sub { chdir '/tmp' } });
}

У меня результат такой:
Benchmark: running autodie on for at least 2 CPU seconds...
autodie on:  3 wallclock secs ( 1.96 usr +  0.15 sys =  2.11 CPU) @
155649.29/s (n=328420)
Benchmark: running autodie off for at least 2 CPU seconds...
autodie off:  2 wallclock secs ( 0.29 usr +  1.78 sys =  2.07 CPU) @
3220760.39/s (n=6666974)

>
>>
>> 13 июня 2013 г., 14:14 пользователь Maxim Vuets <maxim.vuets на gmail.com>
>> написал:
>>
>>> 2013/6/13 Ruslan Zakirov <ruz на bestpractical.com>:
>>> >
>>> > 2013/6/13 Maxim Vuets <maxim.vuets на gmail.com>
>>> >>
>>> >> 2013/6/13 Dmitry L. <dim0xff на gmail.com>:
>>> >> > Привет!
>>> >> >
>>> >> > Возник вопрос, а где правильно (не с точки зрения синтаксиса, а
>>> >> > вообще)
>>> >> > и
>>> >> > нагляднее писать use utf8 в файле с модулем?
>>> >> > 1. до package My::Module;
>>> >> > 2. после package My::Module;
>>> >>
>>> >> Прагма utf8 имеет лексическую область видимости. Объявите до --- будет
>>> >> на файл. После --- на пакет.
>>> >
>>> >
>>> > По этому все лексические прагмы нуно писать до пакета, в том числе
>>> > strict,
>>> > warnings... Один файл - один пакет - это хорошо, но иногда надо два и
>>> > более
>>> > и вот тогда может быть неприятный сюрприз.
>>>
>>> Говоря в общем, да, я согласен (-: Мой типичный boilerplate такой:
>>>
>>>     use strict;
>>>     use warnings;
>>>     use autodie qw<:all>;
>>>     use utf8;
>>>     use open qw<:utf8 :std>;
>>>
>>>
>>>
>>> ##############################################################################
>>>     package My::Package;
>>>
>>>     use Something;
>>> ...
>>> --
>>> Moscow.pm mailing list
>>> moscow-pm на pm.org | http://moscow.pm.org
>>
>>
>>
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>
>
>
> --
> Best regards,
> Ilya Chesnokov
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



--
Vladimir Timofeev <vovkasm на gmail.com>


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