2013-03-19 46 views
0

我有一個包含(使用)兩個模塊(MyA.pm和MyB.pm)的perl腳本(MyTest.pl)。 我有的問題是,模塊A也必須包括模塊B,但這似乎並沒有像.pl文件中已包含的那樣工作。使用(包括/需要)相同的文件兩次

MyTest.pl

use MyA; 
use MyB; 
print hello(); # defined in MyB 

MyA.pm

use MyB; 
print hello(); # defined in MyB 

perl的規定,從MyA.pm.調用的時候,子程序你好是未定義從我所能理解的看起來像使用只適用於第一次使用(ha!)的地方。

任何線索?

回答

1

你沒有表現我們MyBimport方法或告訴我們,如果它繼承像Exporter標準模塊的import方法。 如果沒有import方法,MyB::hello子例程不能被別名到MainMyA命名空間。

你的2個選擇是做導入或使用MyB::hello的全名。

編輯: 嗯,我也注意到你沒有在MyA中使用package這個名字。你的模塊是否都使用Main命名空間作爲他們的私人垃圾箱?

+0

我使用'Exporter'導出'hello'函數。但是你幫了我,我沒有在'MyB'中使用'package'。它現在有效,謝謝。 – Andreas 2013-03-19 13:58:32

+0

這很有趣。我想知道在將''Main :: hello''導入到它自己的命名空間後,'* Main :: hello'是什麼樣的。我無法想象它是好的。飼料另一天.... – tjd 2013-03-19 16:55:52