一 安装perl模块到非自定义目录
How do I get MakeMaker and Module::Build to install to the same place?
Module::Build,as of 0.28,supports two ways to install to the same location as MakeMaker.
1) Use INSTALL_BASE / --install_base
MakeMaker (as of 6.31) and Module::Build (as of 0.28) both can install to the same locations using the "install_base" concept. See "INSTALL_BASE" in ExtUtils::MakeMaker for details. To get MM and MB to install to the same location simply set INSTALL_BASE in MM and --install_base in MB to the same location.
perl Makefile.PL INSTALL_BASE=/whatever
perl Build.PL --install_base /whatever
2) Use PREFIX / --prefix
Module::Build 0.28 added support for --prefix which works like MakeMaker's PREFIX.
perl Makefile.PL PREFIX=/whatever
perl Build.PL --prefix /whatever
二 使用自定义目录下的模块
BEGIN {
push (@INC,'/opt/perl/lib');
}
BEGIN {
unshift @INC,'/opt/perl/lib';
}
use lib '/opt/perl/lib';
use local::lib; # sets up a local lib at ~/perl5
use local::lib '~/foo'; # same,but ~/foo
# Or...
use FindBin;
use local::lib "$FindBin::Bin/../support"; # app-local support library
use FindBin;
use lib "$FindBin::Bin/../lib";
# or
use FindBin qw($Bin);
use lib "$Bin/../lib";
三 查找已经安装的模块
1. Shell 脚本:
find `perl -e ‘print “@INC”‘` -name ‘*.pm’ -print
2. Perl 脚本:
#!/usr/bin/perl
use strict;
use ExtUtils::Installed;
my $inst = ExtUtils::Installed->new();
my @modules = $inst->modules();
foreach (@modules) {
my $ver = $inst->version($_) || “???”;
printf( “%-12s — %s\n”,$_,$ver );
}
exit 0;
完!