Есть ли способ избежать помещения номера версии Perl в строку «use lib» для модулей Perl в нестандартных местах? - PullRequest
3 голосов
/ 18 июня 2010

Я пытаюсь установить некоторые модули 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 ]

5 голосов
/ 18 июня 2010

Возможно, вы не отвечаете на все ваши вопросы, но знаете ли вы local :: lib ?Когда это доступно в системном Perl, вы можете просто use local::lib.Если нет:

use lib glob '~/perl5/lib/perl5';
use local::lib;

Возможно, это немного ограничивает - не уверен, как это работает в Windows - но это достаточно хорошо для моих целей.Конечно, если вы можете настроить среду до запуска скрипта (.bashrc, SetEnv и т. Д.), Вы можете забыть о use lib glob, поскольку правильный путь будет уже задан в PERL5LIB.

0 голосов
/ 18 июня 2010

В настоящее время я установил по следующему рецепту, который, кажется, что-то исправить.

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 кажется необходимым.

...