一、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; 这时,变量$_的值即作为文件名传递给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版本 Perl 5中,可以用require语句来指定程序运行所需的Perl版本。当Perl解释器看到require后跟着数字时,则只有其版本高于或等于该数字时才运行该程序。例如,下面语句表明只有Perl解释器为5.001版或更高时才运行该程序: require 5.001;
|