我驚訝地發現今天我的一個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,而且有點生疏。 –