码迷,mamicode.com
首页 > 其他好文 > 详细

Perl5的包和模块

时间:2015-04-13 20:38:25      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:

一、require函数

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

  作为子程序调用参数,文件中最后一个表达式的值成为返回值,require函数查看其是否为零,若为零则终止。例如myfile.pl最后的语句是:
    print ("hello, world!\n");
    $var = 0;
    因为最后的语句值为零,Perl解释器输出下列错误信息并推出:
    myfile.pl did not reture true value
    可以用简单变量或数组元素等向require传递参数,如:

@reqlist = ("file1.pl", "file2.pl", "file3.pl");
require ($reqlist[$0]);
require ($reqlist[$1]);
require ($reqlist[$2]);

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

  这时,变量$_的值即作为文件名传递给require。
    注:如果@INC中有多个目录中含有同一个文件,则只有第一个被包含。

 

  1. require函数和子程序库

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

    b) 将子程序抽取放到单独的文件中,将文件方法子程序库目录;

    c) 每个文件末尾加一句非零值的语句;

    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文件的内容包含进来作为程序的一部分。

  PS 

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

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

 

  2. 用require 指定Perl版本

二、包

三、模块

Perl5的包和模块

标签:

原文地址:http://www.cnblogs.com/yiyi-xuechen/p/4423043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!