perl使用小技巧之一:当模块不能安装到默认路径时

        perl之所以强大易用,很大程度在于有着各种各样的模块。模块将一个特定的功能封装在里面,用户只用使用模块提供的几个简单的接口函数,就能完成许多复杂的功能。例如,当你在perl想使用ftp模块时可以使用perl的ftp模块,只用执行上面的脚本就可以从主机上ftp下来ducat这个文件。
    use Net::FTP;
    use strict;

my  ( $host ,   $user ,   $passwd ,   $cwd ,   $file ); 
$host   =   " 192.168.11.1 " ;
$user   =   " ducat " ;
$passwd   =   " 111111 " ;
$cwd   =   " /home/ducat " ;
$file   =   " ducat " ;
my   $ftp   =  Net :: FTP -> new( $host ) or  die   " Couldn't connect: $@\n " ;
$ftp -> login( $user ,   $passwd ) or  die   $ftp -> message;
$ftp -> cwd( $cwd );
$ftp -> get( $file );
$ftp -> close ;
        如果要搜索perl模块,强烈推荐 http://www.cpan.org这个网站,可以说只有你想不到的,没有perl做不到的。
        下面进入正题,当你需要某个模块,但是模块默认没有安装时,需要我们自己安装。但是某些时候在unix主机上安装时,你会发现如果没有root用户密码,模块是无法安装到默认目录下。然后执行脚本会出现和下面类型的错误:
Can't locate hello.pm in @INC (@INC contains: /home/web/perl_64/lib/site_perl/ /opt/perl_64/lib/5.8.3/IA64.ARCHREV_0-thread-multi-LP64 /opt/perl_64/lib/5.8.3 /opt/perl_64/lib/site_perl/5.8.3/IA64.ARCHREV_0-thread-multi-LP64 /opt/perl_64/lib/site_perl/5.8.3 /opt/perl_64/lib/site_perl /opt/perl_64/lib/vendor_perl/5.8.3/IA64.ARCHREV_0-thread-multi-LP64 /opt/perl_64/lib/vendor_perl/5.8.3 /opt/perl_64/lib/vendor_perl .) at ./taocan.pl line 7.
BEGIN failed--compilation aborted at ./taocan.pl line 7.
上面那些路径都是perl模块安装时默认路径。分析上面的错误可以知道这些路径是存放在(@INC 这个路径下的,这下我们就有办法了。假如我们将 模块安装到/home/ducat/perl_64/lib/site_perl/这个路径下,如果我们要使用这个模块,只要在脚本开头假如下面两行代码即可:
BEGIN{ unshift  ( @INC ,   " /home/ducat/perl_64/lib/site_perl/ " )};
use  lib  " /home/ducat/perl_64/lib/site_perl/ " ;
(unshift的作用是将我们/home/ducat/perl_64/lib/site_perl/加到数组,并放在第一个元素的位置)这样我们将模块安装到任意路径都不用担心了。

你可能感兴趣的:(perl使用小技巧之一:当模块不能安装到默认路径时)