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 Mypackage
是equivalent to
BEGIN { require Mypackage; Mypackage->import( ); }
所以我们看到 Mypackage
在主程序执行之前执行(因为它在 BEGIN
块中)。有关更多信息和另一个示例,请参阅 this 答案。因此主程序中的subtest()
此时还没有定义。为了让它发挥作用,我们
当 Mypackage
为 运行 时需要定义它。一种方法是
将它放在主程序中 use Mypackage
语句之前的 BEGIN
块中。
BEGIN {
sub test{
print "from test\n";
}
}
use Mypackage;
program.pl
Use Mypackage;
sub test{
print "from test";
}
Mypackage.pl
Package Mypackage;
::test();
这个return没什么。
我看到几个关于包中命名空间调用子程序的线程,但我想做相反的事情
从主命名空间 (program.pl) 打印包中的子例程
这可能吗?
语句use Mypackage
是equivalent to
BEGIN { require Mypackage; Mypackage->import( ); }
所以我们看到 Mypackage
在主程序执行之前执行(因为它在 BEGIN
块中)。有关更多信息和另一个示例,请参阅 this 答案。因此主程序中的subtest()
此时还没有定义。为了让它发挥作用,我们
当 Mypackage
为 运行 时需要定义它。一种方法是
将它放在主程序中 use Mypackage
语句之前的 BEGIN
块中。
BEGIN {
sub test{
print "from test\n";
}
}
use Mypackage;