2013-01-15 5 views
2

나는 에서 제공되는 require을 사용하는 Perl 모듈이며 use이 아닌 import 기호를 선호합니다. Perl은 방금 가져온 변수를 모른다.require를 사용하여 Exporter Perl 모듈에서 심볼을 가져 오는 방법은 무엇입니까?

펄 모듈 샘플 :

package TheModule; 
use strictures; 
use base 'Exporter'; 
use Const::Fast qw(const); 
const our $TEST_VAR_1 => 'Test variable 1'; 
our @EXPORT_OK = qw($TEST_VAR_1); 
our %EXPORT_TAGS = (TEST_VAR => [qw($TEST_VAR_1)]); 

Perl 스크립트 샘플

#!/usr/bin/perl 
use strictures; 
require TheModule; 
TheModule->import(':TEST_VAR'); 
printf "Test variable 1 contains: %s\n", $TEST_VAR_1; 

다음 예는 작동하지만, 나는 require 대신 use 사용해야합니다.

#!/usr/bin/perl 
use strictures; 
use TheModule (':TEST_VAR'); 
printf "Test variable 1 contains: %s\n", $TEST_VAR_1; 

어떻게 require 환경에서 $TEST_VAR_1를 가져?

답변

7

our @EXPORT_TAGSour %EXPORT_TAGS이어야합니다. :)


좋아, 뭔가 다른 것이 있습니다. 컴파일시에,

printf "Test variable 1 contains: %s\n", $TEST_VAR_1; 

가 OPS로 변환 될 때, $TEST_VAR_1 아직 그 범위에 존재

TheModule->import(':TEST_VAR'); 

만 런타임에서 실행되기 때문에하지 않는다. 따라서, 귀하의 요구와 수입 주위에 BEGIN{}을 넣지 않으면이 방법을 사용할 수 없습니다.

+0

불행히도 이것은 제가 지금 고쳐야하는 오타였습니다. 문제가 여전히 존재합니다. – burnersk