Есть ли способ избежать помещения номера версии Perl в строку "use lib" для модулей Perl в нестандартных местах?
Я пытаюсь установить некоторые модули Perl в нестандартном месте, давайте назовем это /non/standard/location
, я использовал
perl Makefile.PL PREFIX=/non/standard/location
make;make install
установить их.
В сценарии, который использует модуль, кажется, необходимо указать длинный путь к каталогу, включая версию Perl, например:
#!/usr/local/bin/perl
use lib '/non/standard/location/lib/perl5/site_perl/5.8.9/';
use A::B;
Есть ли use lib
или другое утверждение, которое я могу использовать, которое не является таким длинным и многословным, и которое не включает в себя фактическую версию Perl, чтобы мне не пришлось возвращаться и редактировать это из программы, если версия Perl повышен?
2 ответа
В настоящее время я установил по следующему рецепту, который, кажется, исправить вещи.
perl Makefile.PL --no-manpages --skipdeps PREFIX=/non/system/location INSTALLSITELIB=/non/system/location/lib INSTALLSITEBIN=/non/system/location/bin INSTALLMAN1DIR=/non/system/location/man/man1 INSTALLMAN3DIR=/non/system/location/man/man3
Я приветствую любую конструктивную критику этого. Я хочу использовать --no-manpages
но INSTALLMAN1DIR
кажется необходимым в любом случае.
Вероятно, не отвечая на все ваши вопросы, но вы знаете local:: lib? Когда это доступно в системном Perl, вы можете просто use local::lib
, Если не:
use lib glob '~/perl5/lib/perl5';
use local::lib;
Это, вероятно, немного ограничивает - не уверен, как это работает в Windows - но это достаточно хорошо для моих целей. Конечно, если вы можете настроить среду до запуска скрипта (.bashrc
, SetEnv
и т.д.), вы можете забыть о use lib glob
, так как правильный путь будет уже установлен в PERL5LIB
,