国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Perl > 正文

Perl中use和require用法對比分析

2020-10-31 15:19:39
字體:
供稿:網(wǎng)友

Perl use和require用法對比

對比(一)說明:
這兩個函數(shù)都是一個意思,加載和引用Perl的模塊,或者是子程序,

區(qū)別在于Perl use是在當(dāng)前默認的里面去尋找,一旦模塊不在指定的區(qū)域內(nèi)的化,用Perl use是不可以引入的

第一、Perl use引入的名稱不需要后綴名,而require需要
第二、Perl use語句是編譯時引入的,require是運行時引入的
第三,Perl use引入模塊的同時,也引入了模塊的子模塊。而require則不能引入,要在重新聲明

Perl use my

my中包含了一個Module.pm

而require 則需要引入requiremy requiremy::Module.pm
如果不想讓Perl use引入Module.pm則可以用Perl userequire()加一對括號來說明即可。
第四用Perl use引入模塊是趨勢,但是也不能說require沒有存在的必要,視具體情況而定。

對比(二)說明

區(qū)別一:跟require不同的是,Perl use只能用于模塊的包含,也就是.pm文件。
比如:
Perl useMyModule;
實際上,編譯器將從@INC指定的目錄下去尋找MyModule.pm模塊。如果模塊名稱中包含::雙冒號,該雙冒號將作為路徑分隔符,相當(dāng)于Unix下的/或者Windows下的。如:
Perl useMyDirectory::MyModule;
編譯器將從@INC指定的目錄下的MyDirectory子目錄去尋找MyModule模塊,類似如下路徑:
C:/Perl/lib/MyDirectory
C:/Perl/ext/lib/MyDirectory
C:/Perl/site/lib/MyDirectory

區(qū)別二:兩個都是包含,但是包含的條件是不一樣的。require包含是發(fā)生在程序運行期,而Perl use包含是發(fā)生在編譯期。學(xué)過C/C++的人比較容易理解。
下面的例子是錯誤的:  

復(fù)制代碼 代碼如下:

Perl useConfig; 
if($Config{'osname'}eq"MSWin32")
 {  Perl useWin32Module;  }
 else  {  Perl useUnixModule;  }

正因為Perl use是發(fā)生在編譯期,代碼沒有執(zhí)行,所以$Config變量的值是無法判斷的。在內(nèi)部,Perl use其實調(diào)用了require和import靜態(tài)函數(shù)。import()函數(shù)告訴包哪些特征將要被導(dǎo)入當(dāng)前包中,這意味著用之前不必驗證函數(shù)或者變量是否合法。而require是不會調(diào)用import()的。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 聊城市| 惠东县| 漯河市| 紫阳县| 临西县| 勐海县| 合阳县| 韩城市| 兴安盟| 阿坝| 汨罗市| 定陶县| 丰台区| 九龙城区| 桑日县| 三都| 丘北县| 鄂托克前旗| 玛曲县| 石狮市| 昭通市| 兰溪市| 嘉兴市| 新化县| 罗源县| 阿鲁科尔沁旗| 虹口区| 南郑县| 图们市| 定襄县| 商河县| 陇南市| 上栗县| 安溪县| 苍南县| 通道| 巴中市| 建德市| 临高县| 鹿邑县| 罗城|