分类: Python/Ruby
2011-10-18 22:48:43
在perl脚本中使用非标准路径库的方法。(标准路径是什么?perl -V)
有如下几种情况:
1. 我们自己的脚本,需要在其中中使用某一个库,这个库不在这个标准路径中,那么我们怎么使用呢?
方法1:
使用perl的lib模块,在自己的脚本中的开头加如下行:
use lib qw(/home/stas/lib/perl5/5.6.1/
/home/stas/lib/perl5/site_perl/5.6.1
/home/stas/lib/perl5/site_perl
);
方法2:
直接修改@INC,在自己的脚本开头加如下行
BEGIN {
unshift @INC,
qw(/home/stas/lib/perl5/5.6.1/i386-linux
/home/stas/lib/perl5/5.6.1
/home/stas/lib/perl5/site_perl/5.6.1/i386-linux
/home/stas/lib/perl5/site_perl/5.6.1
/home/stas/lib/perl5/site_perl
);
}
他们的区别可以参见《practical mod_perl》的3.9.2.1、
2.我们需要安装一个一个模块A,模块A又依赖与模块B,但是B本身又不是安装在标准目录下
这个时候我们再采取方法1,可能就不是最好的方式了。
我们可以设置perl的环境变量:
export PERL5LIB=/home/stas/lib/perl5/5.6.1:\
/home/stas/lib/perl5/site_perl/5.6.1:\
/home/stas/lib/perl5/site_perl
以上说的都是perl脚本,如何引用非标准的库的位置的方法。那么在apache中我们具体应当怎么使用呢?
方法一:
在http.conf中设置如下行:
PerlSetEnv PERL5LIB /my/lib/perl:/other/lib/perl
举例来说,我们写了一个apche的mod_perl模块名字叫Apache::Hello.pm,这个模块的位置在:/home/maguowei/apache/htdocs/lib/perl/Apache/Hello.pm
那么我们就有如下的配置:
PerlSetEnv PERL5LIB /home/maguowei/apache/htdocs/lib/perl/
SetHandler perl-script
PerlHandler Apache::Hello