曲径通幽论坛

标题: 模块安装及简单使用 [打印本页]

作者: beyes    时间: 2011-10-10 16:28
标题: 模块安装及简单使用
http://www.cpan.org/ 可以下载到许多有用的模块。比如可以下载一个 FTP 操作相关的模块:http://search.cpan.org/CPAN/auth ... /libnet-1.22.tar.gz

解压缩后安装模块:
#perl Makefile.PL
#make install
如果是普通用户,那么没办法将模块安装到系统的全局目录下,但可以使用 PREFIX 参数指定安装到你的用户身份可写的目录下,如:
$perl Makefile.PL PREFIX=/home/yourname/perl/lib


有些 Perl 模块开发者会要求使用了另一个辅助模块 Module::Build 来编译安装他们的作品,此时安装方式大致如下:
#perl Build.PL
./Build install
使用模块
要了解一个模块中的详细信息,可以使用 perldoc 命令来查看,它相当于 man 命令,如 perldoc File::Basename 。

比如要使用 File::Basename 中的 basename 函数,那么可以如下使用:
[Perl] 纯文本查看 复制代码
#!/usr/bin/perl

use File::Basename;

my $basename = basename("/home/beyes/myperl");

print "$basename\n";


运行输出:
# ./usem.pl
myperl
如上,当准备使用某个模块时,就用 use 命令先进行声明一下。

如果引入模块中的函数和自定义的函数同名,那么到底使用那个函数?答案是,谁定义的近就用谁。比如下面程序:
[Perl] 纯文本查看 复制代码
#!/usr/bin/perl

sub basename {
        return $_[0];
}

use File::Basename;

my $bname = &basename("/home/beyes/myperl");

print "$bname\n";

运行输出:
# ./usem.pl
myperl
如果调换一下 sub 声明的子函数和 use 声明的引入模块语句的前后顺序,那么将输出:/home/beyes/myperl 。


还有另一种情况是,我只想使用模块中的某些函数,而不使用其它的(因为其它的可能已经和我已定义的函数有同名冲突),那么此时可以用在 use 声明中加入导入列表(import list) 来指出它提供哪些函数,不指出的则不用:
use File::Basename qw/ basename /;
这样,我们在用 basename 时,用的是模块中的函数,而使用别的函数时则是自定义的,即使自定义函数和模块中的函数有重名的。

如果导入列表如下写法,则表示不要引入任何函数:
use File::Basename qw / /;

use File::Basename ();

我们还可以通过全名指定使用模块中的函数:
[Perl] 纯文本查看 复制代码
#!/usr/bin/perl

use File::Basename;

my $bname = File::Basename::dirname("/home/beyes/myperl");


print "$bname\n";

运行输出:
# ./usem.pl
/home/beyes





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2