从Perl中的另一个包中检索信息 - 语法

时间:2014-05-30 20:43:31

标签: perl

我有一个名为pack1 :: i1的包和一个名为pack2 :: i2的包。在pack2里面有一个名为foo的子。如果我在pack1中,那么从pack2中检索那个sub的语法是什么?

这样的东西?:

package pack1
sub hello {
   my $self = shift;
   my $x = pack2::i2->foo;
}

感谢

1 个答案:

答案 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导出函数。

另外,请注意不要将名称空间大写。