一、require函數(shù) 用require函數(shù)可以把程序分割成多個文件并創(chuàng)建函數(shù)庫。例如,在myfile.pl中有定義好的Perl函數(shù),可用語句require ("myfile.pl"); 在程序中包含進(jìn)來。當(dāng)Perl解釋器看到這一語句,就在內(nèi)置數(shù)組變量@INC指定的目錄中尋找文件myfile.pl。如果找到了,該文件中的語句就被執(zhí)行,否則程序終止并輸出錯誤信息: Can't find myfile.pl in @INC 作為子程序調(diào)用參數(shù),文件中最后一個表達(dá)式的值成為返回值,require函數(shù)查看其是否為零,若為零則終止。例如myfile.pl最后的語句是: print ("hello, world!\n"); $var = 0; 因?yàn)樽詈蟮恼Z句值為零,Perl解釋器輸出下列錯誤信息并推出: myfile.pl did not reture true value 可以用簡單變量或數(shù)組元素等向require傳遞參數(shù),如:
@reqlist = ("file1.pl", "file2.pl", "file3.pl"); require ($reqlist[$0]); require ($reqlist[$1]); require ($reqlist[$2]); 還可以不指定文件名,即: require; 這時,變量$_的值即作為文件名傳遞給require。 注:如果@INC中有多個目錄中含有同一個文件,則只有第一個被包含。 1、require函數(shù)和子程序庫 用require函數(shù)可以創(chuàng)建可用于所有Perl程序的子程序庫,步驟如下:
a、確定存貯子程序庫的目錄 b、將子程序抽取放到單獨(dú)的文件中,將文件放到子程序庫目錄 c、每個文件末尾加一句非零值的語句,最簡單的辦法是語句 1; d、在主程序中用require包含一個或多個所需的文件。 e、運(yùn)行主程序時,用 -I 選項(xiàng)指定子程序庫目錄,或者在調(diào)用require前將該目錄添加到@INC數(shù)組中。 例如:假設(shè)目錄/u/perldir中存有你的Perl子程序庫,子程序mysub存貯在文件mysub.pl中。現(xiàn)在來包含上該文件: unshift (@INC, "/u/perldir"); require ("mysub.pl"); 對unshift的調(diào)用把目錄/u/perldir添加到@INC數(shù)組,對require的調(diào)用將mysub.pl文件的內(nèi)容包含進(jìn)來作為程序的一部分。 注意:
1、應(yīng)該使用unshift來向@INC中添加目錄,而不是push。因?yàn)閜ush增加到@INC的末尾,則該目錄將被最后搜尋。 2、如果你的庫文件名與/usr/local/lib/perl中的某文件同名,則不會被包含進(jìn)來,因?yàn)閞equire只包含同名文件中的第一個。 2、用require指定Perl版本 Perl 5中,可以用require語句來指定程序運(yùn)行所需的Perl版本。當(dāng)Perl解釋器看到require后跟著數(shù)字時,則只有其版本高于或等于該數(shù)字時才運(yùn)行該程序。例如,下面語句表明只有Perl解釋器為5.001版或更高時才運(yùn)行該程序: require 5.001;
|