有没有办法避免将Perl版本号放入非标准位置的Perl模块的“use lib”行?

时间:2010-06-18 03:20:44

标签: perl perl-module

我正在尝试将一些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 个答案:

答案 0 :(得分:5)

可能没有解决您的所有问题,但您知道local::lib吗?当它在系统perl中可用时,您只需use local::lib。如果不是:

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

这可能有点限制 - 不确定它在Windows上是如何工作的 - 但它对我的目的来说已经足够了。当然,如果您可以在脚本运行之前设置环境(.bashrcSetEnv等),则可以忘记use lib glob,因为正确的路径已经设置在PERL5LIB

答案 1 :(得分:0)

目前我已通过以下处方安装,这似乎可以解决问题。

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