Perl中use和require用法對比分析_perl

來源:互聯網
上載者:User

Perl use和require用法對比

對比(一)說明:
這兩個函數都是一個意思,載入和引用Perl的模組,或者是子程式,

區別在於Perl use是在當前預設的裡面去尋找,一旦模組不在指定的地區內的化,用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沒有存在的必要,視具體情況而定。

對比(二)說明

區別一:跟require不同的是,Perl use只能用於模組的包含,也就是.pm檔案。

比如:
Perl useMyModule;
實際上,編譯器將從@INC指定的目錄下去尋找MyModule.pm模組。如果模組名稱中包含::雙冒號,該雙冒號將作為路徑分隔字元,相當於Unix下的/或者Windows下的。如:
Perl useMyDirectory::MyModule;
編譯器將從@INC指定的目錄下的MyDirectory子目錄去尋找MyModule模組,類似如下路徑:
C:\Perl\lib\MyDirectory
C:\Perl\ext\lib\MyDirectory
C:\Perl\site\lib\MyDirectory

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


代碼如下:

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


正因為Perl use是發生在編譯期,代碼沒有執行,所以$Config變數的值是無法判斷的。在內部,Perl use其實調用了require和import靜態函數。import()函數告訴包哪些特徵將要被匯入當前包中,這意味著用之前不必驗證函式或者變數是否合法。而require是不會調用import()的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.