Hello at, On Thu, Oct 31, 2002 at 02:44:53AM +0300, at@turbinal.org wrote: > > Возникает только проблема условных зависимостей. Например, в CGI.pm > написано: > > if ($ENV{...}) { > require Apache; > } elsif ($ENV{...}) { > require FCGI; > } > > Таким образом, при "правильном" поиске зависимостей пакет perl-CGI > потянет за собой пакеты apache-mod_perl и mod_fcgi, что несколько > странно. В целом, настолько сильные зависимости были бы неприемлемы. > > Кстати, сейчас в perl-CGI зависимость на apache-mod_perl отсутствует > только потому, что apache-mod_perl не установлен в среде сборки. > > Я посмотрел, как это сделано в rpm-*mdk. Там используется такое > наблюдение, что условные зависимости (require) обычно начинаются с > отступа. Всё это абсолютно в духе грязного хака, но пока это лучшее, что > можно придумать. Если мне дадут возможность отхачить perl.req, я > попробую быстро добиться приемлемой его работы на всем, что мы собираем > (нужно подтверждение). Я задумывался о менее грязном решении: компилировать файлы и выдавать из обратно через B::Deparse. Вывод будет идеально отформатирован, безусловные require не имеют отступа, а код процедур не из main::, наоборот, не выдаётся по умолчанию. Но пропадают use. Есть ещё и более вкусная штучка -- B::Xref, которая выдаёт файлы и пакеты, использованные на этапе компиляции. Попробуйте: perl -MO=Xref,r <скрипт> | grep ^File Проблема может быть ещё в том, что некоторые блоки perl-кода могут исполняться сразу на этапе компиляции и повлиять на результат. Но с этим ничего поделать нельзя: это perl, There Is More Than One Way To Screw It :) -- Stay tuned, MhZ JID: mookid@jabber.org ___________ Repartee is something we think of twenty-four hours too late. -- Mark Twain