Perl语言入门学习笔记-8
上一篇 / 下一篇 2007-10-26 19:36:57 / 个人分类:编程吧
Perl模块51Testing软件测试网bn[h f&f
'v6Z2J[0Ay0Perl模块可以用Perl编写,也可以用其他语言例如C、C++编写。51Testing软件测试网.VK3W8`@
例如Digest::MD5模块,由一组功能强大的校验和检查(checksum)函数组成,使用了大量低级位运算。如果用Perl来实现(确实有Digest::Perl::MD5),速度会很慢,所以用C来实现以提高效率。51Testing软件测试网&~H3T\I-J;H9q
Perl模块有两种发布方式:一类模块随附在Perl包中,一类模块从CPAN获得自行安装。51Testing软件测试网y@\N+a*j
+查询模块51Testing软件测试网)y M!}_8FDP)P
1. 在http://www.cpan.org/authors/id/P/PH/PHOENIX/下下载inside程序,查询系统中已经安装的模块.51Testing软件测试网zCB d7e
2. 试着用perldoc来阅读模块的文档,如果该模块未被安装,会出现一些提示信息。
lE*`/uA&X4p9d0$perldoc CGI51Testing软件测试网rM)ck'bw
5]9R.S^4Z~0+安装模块51Testing软件测试网mk0bgUC1JD,M
在http://search.cpan.org/下搜索需要的模块,然后参考perlmodinstall在线文档的说明来安装。51Testing软件测试网
u
@mD:e]#i
或者下载模块后查看README和INSTALL文件,按照其指示来安装。
"{-J!JUf#|!n0如果这个模块使用了ExtUtils::MakeMaker模块(它会根据系统上安装的Perl信息创建适当的模块安装程序),可用如下方式安装:
M.w}jKp!su\0$perl Makefile.PL PREFIX=/home/enigma
} r zI,u7I0$make install
:A7W/^,|]Rt0或者使用Module::Build模块编译并安装指定模块:51Testing软件测试网'@k!D`'t
$perl Build.PL
1^ t
g9k3Q8M)uV1g9W-q0$./Build install51Testing软件测试网 p YTwV2K:Z&F5rG
由于模块的关联性和相互依赖性,实际安装过程会比较复杂。可以使用Perl包管理器来安装模块,或使用Perl自带的CPAN.pm。
?y$f#\1a"_$E-P0$perl -MCPAN -e shell #启动CPAN自己的shell
2z`8G!]A6|D0+使用模块
2lj?n RA6\$K0#!/usr/bin/perl -w51Testing软件测试网!b;kw8c)H K
use DBI; #使用数据库接口模块51Testing软件测试网'uV
f:Ac/m8j
use DBD::Oracle; #使用数据库驱动模块
$dbh=DBI->connect($data_source, $username, $password)
'Hq:bN#izQ*j0 or die "Could't connect to database:".DBI::errstr;
OAk8[C}].AJ0#连接数据库
:@ M-hRj(Tw!bRa0my $data_source="dbi:Oracle:dbname=$DBNAME";51Testing软件测试网|q&{HU1Q Rg%S;m
D
#$data_source包含了DBD的特定信息
:H2^\9G+g)F3f3]-c,l0$sth=$dbh->prepare("SELECT * FROM foo WHERE bla");51Testing软件测试网,t\+M"[8erK~:?5n
#准备查询
'I f!N7~ iK0$sth->execute();
j`2V%q6Yz0#执行查询51Testing软件测试网 S
yl3lR
@row_ary=$sth->fetchrow_array;51Testing软件测试网(SH$X3]&OL4eJ
#读取查询51Testing软件测试网t~:wubYG Ru[
$sth->finish;51Testing软件测试网([!@I)Z+pys/PU ~~
$dbh->disconnect();51Testing软件测试网[p*e+DKZ)nvNVFl'N
#断开数据库
+一些常用模块51Testing软件测试网
c_iG1e KF
++CGI模块51Testing软件测试网P7Gx!QO+i]
可用来编写Web服务器上运行的CGI程序
2f\H2d0i3f0++Cwd模块
3^7{1ZG\)N+{0该模块提供了cwd函数,可以返回当前工作目录的名称。
Y];Hw6t3G'pF,`0use Cwd;51Testing软件测试网)`i5g)b1?
my $directory=cwd;51Testing软件测试网c:Ny^%E&VM
++Fatal模块51Testing软件测试网/i*to.^I\*OD
不必每次在open或chdir之后附加"or die",在Fatal模块后声明的函数可以自动检测是否执行失败并给出错误信息。
use Fatal qw/ open chdir /;51Testing软件测试网4z@+vFvH5r
chdir '/home/merlyn';
++File::Basename模块
o
v1oA$H%kA0该模块可以从文件全名中提取基名,会判断使用的系统并使用该系统默认的文件名规则。
use File::Basename;
O'\/h.R.m0my $name="/usr/local/bin/perl";
Y)s'Kea/`J0my $basename=basename $name;51Testing软件测试网CtOh%Z&TH
my $dirname=dirname $name;
use File::Basename qw/ basename dirname /;51Testing软件测试网0G})Pta1h
#在模块声明中加入import list,只选用模块中的部分函数。有默认的导入列表。