2012-09-28 2 views
2

이것이 가능하다는 것을 완전히 확신 할 수는 없지만 단순히 패키지 이름을 생략하여 다른 패키지에서 선언 한 호출 서브 루틴의 이름을 간단히 줄이고 싶습니다.서브 루틴 이름 앞에 패키지 이름을 붙이지 않고 다른 패키지에서 선언 된 서브 루틴을 어떻게 호출 할 수 있습니까?

는 예를 들어, I는 모듈 정의 :

package Package1; 

use strict; 
use warnings; 

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

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

return 1; 

그리고 정의 된 드라이버 응용 프로그램이 : 나는 subroutine1에 전화를 단축 보일 수

use strict; 
use warnings; 

use Package1; 

&Package1::subroutine1; 

유일한 방법은 만들기로입니다 다음과 같은 별칭 :

*s1 = \&Package1::subroutine1; 
&s1; 

는 확실히 내가 바보 멍청되고있어 여기에 뭔가 빠져 있습니다. 이것을 달성하기위한 더 깨끗한 방법이 있습니까?

답변

5

변경

use Package1; 

use Package1 qw(subroutine1); 

또는 내가 RECO

our @EXPORT_OK = qw(subroutine1); 

our @EXPORT = qw(subroutine1); 

에 변경 첫 번째 변경 사항을 수정하십시오.

1

당신은 이미 이것을 달성하는 방법 인 Exporter을 사용하고 있습니다. 당신이해야 할 모든 호출 패키지에 기호를 내보낼 Exporter에서 제공하는 import 방법을 이야기하기 위해

에 드라이버 응용 프로그램 코드를 변경합니다.

관련 문제