Perl5的包和模块编写.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第十四章Perl5的包和模块

一、require函数

??1、require函数和子程序库

??2、用require指定Perl版本

二、包

??1、包的定义

??2、在包间切换

??3、main包

??4、包的引用

??5、指定无当前包

??6、包和子程序

??7、用包定义私有数据

??8、包和系统变量

??9、访问符号表

三、模块

??1、创建模块

??2、导入模块

??3、预定义模块

一、require函数

????用require函数可以把程序分割成多个文件并创建函数库。例如,在myfile.pl中有定义好的Perl函数,可用语句require("myfile.pl");在程序中包含进来。当Perl解释器看到这一语句,就在内置数组变量@INC指定的目录中寻找文件myfile.pl。如果找到了,该文件中的语句就被执行,否则程序终止并输出错误信息:

????Can'tfindmyfile.plin@INC

????作为子程序调用参数,文件中最后一个表达式的值成为返回值,require函数查看其是否为零,若为零则终止。例如myfile.pl最后的语句是:

????print("hello,world!\n");

????$var=0;

????因为最后的语句值为零,Perl解释器输出下列错误信息并推出:

????myfile.pldidnotreturetruevalue

????可以用简单变量或数组元素等向require传递参数,如:

@reqlist=("file1.pl","file2.pl","file3.pl");

require($reqlist[$0]);

require($reqlist[$1]);

require($reqlist[$2]);

????还可以不指定文件名,即:

????require;

????这时,变量$_的值即作为文件名传递给require。

????注:如果@INC中有多个目录中含有同一个文件,则只有第一个被包含。

1、require函数和子程序库

????用require函数可以创建可用于所有Perl程序的子程序库,步骤如下:

a、确定存贮子程序库的目录

b、将子程序抽取放到单独的文件中,将文件放到子程序库目录

c、每个文件末尾加一句非零值的语句,最简单的办法是语句1;

d、在主程序中用require包含一个或多个所需的文件。

e、运行主程序时,用-I选项指定子程序库目录,或者在调用require前将该目录添加到@INC数组中。

????例如:假设目录/u/perldir中存有你的Perl子程序库,子程序mysub存贮在文件mysub.pl中。现在来包含上该文件:

????unshift(@INC,"/u/perldir");

????require("mysub.pl");

????对unshift的调用把目录/u/perldir添加到@INC数组,对require的调用将mysub.pl文件的内容包含进来作为程序的一部分。

注意:

1、应该使用unshift来向@INC中添加目录,而不是push。因为push增加到@INC的末尾,则该目录将被最后搜寻。

2、如果你的库文件名与/usr/local/lib/perl中的某文件同名,则不会被包含进来,因为require只包含同名文件中的第一个。

2、用require指定Perl版本

????Perl5中,可以用require语句来指定程序运行所需的Perl版本。当Perl解释器看到require后跟着数字时,则只有其版本高于或等于该数字时才运行该程序。例如,下面语句表明只有Perl解释器为5.001版或更高时才运行该程序:

????require5.001;

二、包

????Perl程序把变量和子程序的名称存贮到符号表中,perl的符号表中名字的集合就称为包(package)。

1、包的定义

????在一个程序中可以定义多个包,每个包有一个单独的符号表,定义语法为:

????packagemypack;

????此语句定义一个名为mypack的包,从此以后定义的所有变量和子程序的名字都存贮在该包关联的符号表中,直到遇到另一个package语句为止。

????每个符号表有其自己的一组变量、子程序名,各组名字是不相关的,因此可以在不同的包中使用相同的变量名,而代表的是不同的变量。如:

$var=14;

packagemypack;

$var=6;

????第一个语句创建变量$var并存贮在main符号表中,第三个语句创建另一个同名变量$var并存贮在mypack包的符号表中。

2、在包间切换

??

文档评论(0)

guanyulong + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档