Perl语言入门(14 模块)

2016-10-08 11:29:39来源:CSDN作者:haoweilaizoule人点击

由于公司需要,本人最近在学习Perl这种脚本语言,本文是我在学习Perl的过程中总结出来的一些心得和笔记,希望能够帮助也在学习Perl的各位同僚。废话不多说直接上干货!!!

———————————————————————————干货分割线 —————————————————————————

模块概念

若要在你的P e r l程序中使用模块,可以使用P e r lu 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 -wuse strict;use File::Find; sub wanted{    if($_ eq "test.txt"){        print $File::Find::name;    }} find /&wanted,'C:/Users/Administrator/Desktop';


<2>删除给定名称的文件

#!/usr/bin/perl -wuse 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 -wuse 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 -wuse 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 -wuse 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

 

 

 

 

 

 

 

 


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台