Есть ли способ избежать помещения номера версии 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,

Другие вопросы по тегам