关于 Perl Modules
From PostgreSQL 中文维基, PostgreSQL 中文站, PostgreSQL 中国社区, PostgreSQL Chinese community
[编辑] 如何不安装使用 Perl Modules
- 使用 Modules
luoyi@darkstar:~/src/dbperl$ ls blib t test.pl luoyi@darkstar:~/src/dbperl$ perl -Iblib/lib -Iblib/arch t/examples.t 1..7 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 luoyi@darkstar:~/src/dbperl$
Perl Module 编译好以后,.pm 文件放在 blib/lib 中,.so 文件放在 blib/arch 中,因此加上两个 -I 参数就可以不用安装,直接使用了。
- 察看 Modules 帮助
luoyi@darkstar:~/src/dbperl$ env PATH=`pwd`/blib/lib/:$PATH perldoc BerkeleyDB
perldoc 会从 PATH PERL5LIB PERLLIB 这几个环境变量中找文档
- 将某目录下安装过的 Perl Modules 合并到单独的 blib 中
[root@slin ~]# find .cpan -type d -name 'blib'
.cpan/build/XML-NamespaceSupport-1.09/blib
.cpan/build/XML-SAX-Expat-0.39/blib
.cpan/build/XML-Parser-2.36/blib
.cpan/build/DBD-Pg-2.5.1/blib
.cpan/build/DBI-1.604/blib
.cpan/build/XML-Simple-2.18/blib
.cpan/build/version-0.74/blib
.cpan/build/XML-SAX-0.16/blib
[root@slin ~]# find .cpan -type d -name 'blib' |xargs -i cp -r {} .
[root@slin ~]# ls blib
arch bin lib man1 man3 script
[root@slin ~]# tar jcf blib.tar.bz2 blib/
这样只需要将这个 [blib.tar.bz2] 解压缩到合适的地方,即可使用这些库了。
我们转到另外一台机器,测试这个包的使用情况。
首先确认这台机器没有安装 XML::Simple 库:
[luoyi@imtest5 perltest]$ perl -MXML::Simple Can't locate XML/Simple.pm in @INC (@INC contains: /home/y/lib/perl5/5.8/i686-linux-64int /home/y/lib/perl5/5.8 /home/y/lib/perl5/site_perl/5.8/i686-linux-64int /home/y/lib/perl5/site_perl/5.8 /home/y/lib/perl5/site_perl/5.8 /home/y/lib/perl5/site_perl/5.8.6/i686-linux-64int /home/y/lib/perl5/site_perl/5.8.6 /home/y/lib/perl5/site_perl /home/y/lib/perl5/5.8.6 /home/y/lib/perl5/5.8.6/i686-linux-64int /home/y/lib/perl5/site_perl/5.8.6/i686-linux-64int /home/y/lib/perl5/site_perl/5.8.6 /home/y/lib/perl5/site_perl/5.8.6/i686-linux-64int .). BEGIN failed--compilation aborted.
然后将这个 bz2 包,解压缩到本地,并且使用这个包内的 library:
[luoyi@imtest5 perltest]$ ls
blib foo.xml Perlblib.tar.bz2 test.pl
[luoyi@imtest5 perltest]$ cat foo.xml
<config logdir="/var/log/foo/" debugfile="/tmp/foo.debug">
</config>
[luoyi@imtest5 perltest]$ cat test.pl
#!/usr/bin/perl -Iblib/lib -Iblib/arch -w
use XML::Simple;
use Data::Dumper;
use strict;
use bytes;
my $a = XMLin("foo.xml");
print Dumper($a);
[luoyi@imtest5 perltest]$ ./test.pl
$VAR1 = {
'debugfile' => '/tmp/foo.debug',
'logdir' => '/var/log/foo/'
};
[luoyi@imtest5 perltest]$
这样的过程感觉比 cpan 装包简单,可靠。
