Perl - 从包中调用主命名空间的子程序

Perl - Call subroutine of main namespace from package

program.pl

Use Mypackage;

sub test{

print "from test";

}

Mypackage.pl

Package Mypackage;

::test();

这个return没什么。

我看到几个关于包中命名空间调用子程序的线程,但我想做相反的事情

从主命名空间 (program.pl) 打印包中的子例程

这可能吗?

语句use Mypackageequivalent to

BEGIN { require Mypackage; Mypackage->import( ); }

所以我们看到 Mypackage 在主程序执行之前执行(因为它在 BEGIN 块中)。有关更多信息和另一个示例,请参阅 this 答案。因此主程序中的subtest()此时还没有定义。为了让它发挥作用,我们 当 Mypackage 为 运行 时需要定义它。一种方法是 将它放在主程序中 use Mypackage 语句之前的 BEGIN 块中。

BEGIN {
    sub test{
        print "from test\n";
    }
}    
use Mypackage;