The*_*ing 0 perl namespaces package subroutine
program.pl
Use Mypackage;
sub test{
print "from test";
}
Run Code Online (Sandbox Code Playgroud)
Mypackage.pl
Package Mypackage;
::test();
Run Code Online (Sandbox Code Playgroud)
这没什么回报.
我从包中看到了几个关于调用子例程中调用子例程的线程,但我想做相反的事情
从主命名空间(program.pl)打印包中的子例程
这可能吗 ?
该声明use Mypackage是等同于
BEGIN { require Mypackage; Mypackage->import( ); }
Run Code Online (Sandbox Code Playgroud)
所以我们看到Mypackage在执行主程序之前执行(因为它在一个BEGIN块中).有关详细信息,请参阅此答案另一个示例.因此,test()主程序中的子目前尚未定义.为了使它工作,我们需要在Mypackage运行时定义它.一种方法是将它放在主程序中BEGIN的use Mypackage语句之前的块中.
BEGIN {
sub test{
print "from test\n";
}
}
use Mypackage;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |