From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <3B0B15F3.3060400@novosoft.ru> Date: Wed, 23 May 2001 08:44:19 +0700 From: Alexey Morozov Organization: Novosoft, Inc. User-Agent: Mozilla/5.0 (X11; U; Linux 2.4.3 i686; en-US; rv:0.9) Gecko/20010511 X-Accept-Language: ru, en MIME-Version: 1.0 To: sisyphus@altlinux.ru Subject: Re: [sisyphus] Re: [sisyphus] =?KOI8-R?Q?=E4=C1=D7=C1=CA=D4=C5=20=D3=D0=CF=D2=C9=D4=D8=2E=20=EF?= Perl? References: <3B05163A.3040800@novosoft.ru> <20010522134047.I12506@ldv.office.alt-linux.org> <3B0A6705.2060705@novosoft.ru> <20010523030914.F1915@localhost.localdomain> Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit Sender: sisyphus-admin@altlinux.ru Errors-To: sisyphus-admin@altlinux.ru X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.0 Precedence: bulk Reply-To: sisyphus@altlinux.ru List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Archived-At: List-Archive: 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 можно прогнать байт-код >через декомпилятор, и если тот не загнется, получить идеально >выровненный текст, где уровень отступа означает вложенность. Но пока > Гхм... Что-то в этом есть... >не видно практической нужды увеличивать точность работы за счет >понижения производительности. Идеи, разумеется, приветствуются. >Особенно - в виде кода, патчей и т.п. > Угу.