假设我们有这样的当sub Foo :: bar {}和sub bar {}属于Foo包时,它们有什么区别?
package Foo;
sub bar {
say 'hi';
}
代码,这
package Foo;
sub Foo::bar {
say 'hi';
}
我还以为他们是等价的,所以我们是否具有完全合格的定义方法,我们可以做到这一点
Foo->bar();
名称与否。但是,在某些情况下,它们确实是不同的。例如,在由perldoc -f require
给出的例子中,该方法INC
必须与包名完全限定:
# In Foo.pm
package Foo;
sub new { ... }
sub Foo::INC {
my ($self, $filename) = @_;
...
}
# In the main program
push @INC, Foo->new(...);
如果我们不完全限定的方法名,则发生编译时错误。那么,全限定名和预先没有包名之间有什么区别?
我遇到的编译时错误可能来自加载所需模块的失败。 – Cody