2013-07-13 58 views
1

我有一個名爲foo的Perl子例程,它位於文件C.pm中。 C.pm是在目錄B和目錄A如下:A > B > C.pm > foo爲什麼我需要在這個Perl程序中使用聲明?

我想從另一個文件調用foo子例程。如果我下面的工作原理:

use A::B::C qw(foo); 

//Code here 

foo($temp) 

但是,以下不工作

//Code here 

A::B::C::foo($temp) 

爲什麼不呢?如果我在調用該子例程時明確寫出路徑,我認爲我不需要包含use語句。

+3

千萬記住''//是不是在Perl評論,請使用''#對於評論 –

+0

@JoelBerger你讓我......這應該是一個'#'符號。你可以知道,我是一個Java程序員心臟 – Nosrettap

回答

8

use做了兩兩件事:

  1. require是個文件,它解析,編譯和執行它
  2. 它調用新的模塊,您也可以在當前命名空間中安裝子程序的import方法。

你必須以某種方式執行一個模塊,然後再使用在其中定義的子模塊。

如果你不想導入任何子程序或其他符號,你可以給use空單:

use A::B::C(); 
+7

爲了更進一步,有時使用完全限定名稱的原因是,如果任何其他模塊已經加載有問題的模塊(通過使用或需要),現在你可以使用完全限定名稱。檢查'%INC'查看已經加載的內容。 –

相關問題