我有一个名为pack1 :: i1的包和一个名为pack2 :: i2的包。在pack2里面有一个名为foo的子。如果我在pack1中,那么从pack2中检索那个sub的语法是什么?
这样的东西?:
package pack1
sub hello {
my $self = shift;
my $x = pack2::i2->foo;
}
感谢
答案 0 :(得分:1)
您需要使用子例程的完全限定名称。 这是一个例子。
use strict;
use warnings;
package Pack1::I1;
sub hello {
my $self = shift;
print Pack2::I2::foo(), "\n"; # fully qualified name
}
# sub is found because we are in namespace Pack1::I1
hello();
package Pack2::I2;
sub foo {
return "foo from Pack2::I2::foo()";
}
但是,更常见的方法是使用模块 Exporter 。你可以从namspace Pack1 :: I1到命名空间Pack2 :: I2导出函数。
另外,请注意不要将名称空间大写。