标签:
一、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版本
二、包
三、模块
标签:
原文地址:http://www.cnblogs.com/yiyi-xuechen/p/4423043.html