我并不完全确定这是可能的,但是我想通过省略软件包名称来简单地缩短我正在另一个软件包中声明的子例程的名称。

例如,我定义了一个模块:

package Package1;

use strict;
use warnings;

BEGIN
{
  require Exporter;
  our @ISA = qw( Exporter );
  our @EXPORT_OK = qw( subroutine1 );
}

sub subroutine1
{
  print "Hello!$/";
}

return 1;

我定义了一个驱动程序应用程序:
use strict;
use warnings;

use Package1;

&Package1::subroutine1;

我似乎可以缩短对subroutine1的调用的唯一方法是制作一个如下别名:
*s1 = \&Package1::subroutine1;
&s1;

我肯定是傻子,在这里错过了一些东西。是否有一种更清洁的方法来实现这一目标?

最佳答案

更改

use Package1;


use Package1 qw( subroutine1 );

或改变
our @EXPORT_OK = qw( subroutine1 );


our @EXPORT = qw( subroutine1 );

我建议第一个更改。

关于perl - 如何调用在另一个程序包中声明的子例程,而不用其程序包名称作为子例程名称的前缀?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12644016/

10-11 02:25