2013-03-19 26 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