我惊讶地发现今天我的一个perl模块使用了另一个模块,但没有导入它。
perl模块从未导入的包中调用方法
但是,当我意识到这从未造成任何问题时,我感到震惊!
的代码是一样的东西:
package This;
# no import for OTHER !!
sub new {
... implementation ...
my $something = OTHER->new(@arguments); # no error!
... more implementation ...
}
那么是什么原因?没有This
的进口进口OTHER
- 这是我检查的第一件事。
难道说如果输入的代码
This
也输入了
OTHER
,
OTHER
可用于
This
?
澄清的问题:
X
,Y
,和Z
是模块。- 在X:
use Y;
- 在X:
use Z;
Y
不use
Z
是否Y
访问的功能和方法Z
(反之亦然)?
它被导入某处。我怀疑如果你把这个归咎于[SSCCE](http://sscce.org/),你会发现是这样的。 –
@BrianRoach - 我只是想澄清一下:如果X输入Y,X输入Z,那么Y可以访问Z而不输入它(反之亦然)? –
我相信是的,一旦一个包被导入,它就可以在全球范围内使用,因为OO的方式被固定在perl上,但我不得不测试它;我几年来没有真正写过很多perl,而且有点生疏。 –