[sisyphus] Re: [sisyphus] Давайте спорить. О Perl?

Alexey Morozov =?iso-8859-1?q?morozov_=CE=C1_novosoft=2Eru?=
Ср Май 23 05:44:19 MSD 2001


Mikhail Zabaluev wrote:

>А что, и расскажу. Когда мы с Дмитрием обсуждали авто-зависимости для
>Perl, никаких общепринятых схем, кроме perl-Some-Module в имени
>пакета, на горизонте не было. Выбранная схема позволяет включать в
>
Гхм. Насколько я понимаю ситуацию, уже в 98 году у меня были модули, 
собранные именно через perl(Test::Module) :-)

>зависимости не только .pm-модули, но и .pl, .ph и -- теоретически --
>любые другие. Почитайте внимательно TFM: оператор require допускает
>явную файловую форму, а также разделитель "'" вместо "::". Вы уже
>
Я это знаю. Я профессиональный писатель на perl (ну, нет, разумеется, не 
только :-)) Я даже знаю, что require можно заменить на do + 
манипулирование %INC :-). А в некоторых, совсем клинических местах 
(например, у меня) встречается

$module = get_app_name($somedata);
eval "require $app"; # Вот именно так, в строчном контексте, чтобы не 
колбасить руками преобразование Test::Module -> Test/Module.pm :-)

Я это все знаю. Более того, пользуюсь. И поэтому не могу сказать: "а, вы 
все дураки, один я Д'Артаньян". Но думать надо. Вы не задумывались над 
тем, что бы пытаться грузить модуль, а потом анализировать изменения в 
%INC? По-видимому, это даст нам _минимальный_ набор требуемых модулей, 
хотя, конечно, если модули цепляются через require, там придется еще 
подумать, а удается ли их зацепить таким вот образом. Короче, надо думать...

>ненавидите Perl так, как ненавижу его я? :)
>
"Это наша родина, сынок" :-)

> Во всем этом разнобое самыми надежными выглядят имена файлов.
>
Собственно, большой разницы, что цеплять perl(Test/Module.pm) или 
perl(Test::Module) я не вижу (разве что, второе более наглядно и, 
наверное, более портабельно между системами :-)). Но вот как эти 
Test::Module выбирать - это вопрос...

>>Нет, я еще раз повторю, я не знаю, как правильно. Возможно, совсем 
>>правильно, но ломово - руками.
>>
>Истинно так. AutoReq и AutoProv - подпорки, которые не должны
>полностью заменять высшую нервную деятельность. Они должны работать
>
Глядя на размер CPAN начинаешь тосковать по более полезному применению 
"высшей нервной" :-)

>там, где эта деятельность не требуется. В тех же пакетах, где
>встречаются такие require "из-за угла", AutoReq: perl (на финальной
>стадии работы над пакетом) не используется.
>
>В текущей версии скриптов perl.{req,prov} анализируются наиболее
>распространенные формы операторов включения, да еще делается eval в
>"сейфе" как попытка определения номера версии. Есть ухищрения, которые
>можно применить -- например, в Perl 5.6.x можно прогнать байт-код
>через декомпилятор, и если тот не загнется, получить идеально
>выровненный текст, где уровень отступа означает вложенность. Но пока
>
Гхм... Что-то в этом есть...

>не видно практической нужды увеличивать точность работы за счет
>понижения производительности. Идеи, разумеется, приветствуются.
>Особенно - в виде кода, патчей и т.п.
>
Угу.







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