由于公司需要,本人最近在学习Perl这种脚本语言,本文是我在学习Perl的过程中总结出来的一些心得和笔记,希望能够帮助也在学习Perl的各位同僚。废话不多说直接上干货!!!
———————————————————————————干货分割线 —————————————————————————
模块概念
若要在你的P e r l程序中使用模块,可以使用 P e r l的u s e命令,如:
use Cwd;
模块使用工作原理:
1) Perl解释程序读入代码,直到 use Cwd语句被找到。
2) Perl解释程序在安装目录中找到Cwd模块。
3) Perl读取该模块,该模块运行时需要的所有函数和变量均被初始化。
4) Perl解释程序从上次终止的位置开始,继续读取和编译你的程序。
读取模块的文档
每个模块都有相关的文档供你参考,查看模块文档的命令如下:
perldoc Cwd
模块引发的错误
1>.当使用模块编辑程序时,运行报错:
这有极大可能是由你的perl版本过低,许多性能不能使用的缘故造成的。在命令行中键入:
perl -v
查看perl版本,若版本号小于5,就有很多功能不能使用,请及时升级版本。
2>.当使用模块编辑程序时,运行报错:
问题可能是下列3者之一:
• 模块的名字拼写有误。
• 要使用的模块不是标准产品的组成部分,它没有安装在系统的正确位置上。
• 安装的P e r l不完整,或者受到了破坏,也可能安装不正确。
Perl解释程序会按照出错消息输出的 @ I N C中的路径查看已安装的模块。如果这些模块移动了位置,被删除,或者无法使用,最简单的解决办法是重新安装Perl。
模块使用例子
Exp:
<1>在目录中搜索给定的文件名,若找打则输出文件名称
#!/usr/bin/perl -w
use strict;
use File::Find;
sub wanted{
if($_ eq "test.txt"){
print $File::Find::name;
}
}
find \&wanted,'C:\Users\Administrator\Desktop';
<2>删除给定名称的文件
#!/usr/bin/perl -w
use strict;
use File::Find;
sub wanted{
if(-f $File::Find::name){ #要查找的文件是不是个普通文件
if($File::Find::name =~ /\.bak$/i){#文件名以.bak结尾忽略大小写
print "Removing $File::Find::name";
unlink $File::Find::name; #删除文件
}
}
}
find \&wanted,'C:\Users\Administrator\Desktop',’D:’;
文件拷贝模块
use File::Copy;
copy(“sourcefile”,”destination”)||warn “could not copy files:$!”;
File::copy模块也提供了一个move函数。move函数能够将文件从一个目录移到另一个目录。也可以通过该函数对文件改名。当源文件和目标文件在同一个文件系统或磁盘上时,源文件将被改名。如果无法通过对文件改名来移动文件,那么文件首先拷贝到目标文件名,然后将原始文件删除。请看下面这个例子:
Exp:
#!/usr/bin/perl -w
use strict;
use File::Copy;
if(not move("test.txt","d:///test.txt")){
warn "test.txt could not be moved:$!";
unlink "d:/test.txt";
}
在上面的代码段中,文件test.txt从当前目录移到目标目录d:/中。 如果move函数运行失败,那么就可能存在不完整的目标文件,此时unlink函数将删除部分拷贝的目标文件。
通信模块
Net::Ping模块可以确定你的系统是否能够在网络上正确地进行通信。
Exp:
#!/usr/bin/perl -w
use strict;
use Net::Ping;
if(pingecho("www.baidu.com",15)){
print "Baidu is on the network";
}else{
print "Baidu is not on the network";
}
PS:
在上面这个代码段中,Net::Ping模块提供了一函数叫做pingecho。该函数有两个参数,第一个参数是要查找的主机,在上例中是www.baidu.com。第二个参数用于指明pingecho应该等待多长时间(单位:秒)才能收到对方的应答。
English模块
use English;
while(<>){
print $ARG;
}
在上面的代码段中,while(< >)通常从STDIN中读取一个行输入,并将它赋予$_.但是,使用 use English,变量$ _也叫做$ARG。下面显示了特殊变量及其对应的英文变量的部分列表。
diagnostics模块
模块diagnostics能够查找程序中的错误。例如:
#!/usr/bin/perl -w
use strict;
use diagnostics;
print "For help,send mail to <a href="mailto:help@support.org/n\" ;"="">help@support.org\n";
它能够输出文字更加详细的错误消息:
该消息前面的字母说明你遇到的是何种类型的错误。
<W>:是一个警告
<D>:表示使用了不该使用的语句
<S>:严重警告
<F>:表示致命错误
除了<F>遇到的其他错误代码都会继续执行。
通过浏览p e r l d i a g在线手册页,就可以看到出错消息和诊断消息的完整列表。
标准模块的完整列表
关于P e r l中包含的模块的完整列表,本书将不作详细的说明。下面是标准P e r l产品中的模块列表及其简单的说明。如果想知道模块的作用以及它如何运行,请使用p e r l d o c,以查看该模块的文档资料。
StrawberryPerl模块的安装说明文档链接:
http://blog.csdn.net/haoweilaizoule/article/details/52303998