2012-09-28 47 views
2

我不完全確定這是可能的,但我想簡單地縮短我調用在另一個包中聲明的子例程的名稱,只需省略包名即可。我怎樣才能調用在另一個包中聲明的子程序,而不用爲子程序名加上包名呢?

例如,我有一個模塊定義:

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; 

當然,我是一個doofus並在這裏錯過了一些東西..有沒有更清晰的方法來實現這一目標

回答

5

變化

use Package1; 

use Package1 qw(subroutine1); 

或更改

our @EXPORT_OK = qw(subroutine1); 

our @EXPORT = qw(subroutine1); 

我RECO修改第一個變化。

1

您已經在使用Exporter,這是您如何實現這一目標的。所有你需要做的是改變你的驅動程序的應用程序代碼

爲了告訴由Exporter提供的import方法,將元件導出到調用包。

相關問題