如何使用require从Exporter Perl模块导入符号?

bur*_*rsk 2 import perl module perl-module exporter

我喜欢使用和不使用有源Perl模块的import符号.Perl不知道他刚导入的变量.Exporterrequireuse

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 )] );
Run Code Online (Sandbox Code Playgroud)

Perl脚本示例

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

以下示例有效,但我必须使用require而不是use.

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

如何$TEST_VAR_1require环境中导入?

Mit*_*ldu 7

our @EXPORT_TAGS应该是our %EXPORT_TAGS.:)


好吧,还有其他错误.在编译时,何时

printf "Test variable 1 contains: %s\n", $TEST_VAR_1;
Run Code Online (Sandbox Code Playgroud)

正在转变为操作$TEST_VAR_1,从那时起就不存在于此范围内

TheModule->import( ':TEST_VAR' );
Run Code Online (Sandbox Code Playgroud)

仅在运行时执行.所以,除非你把BEGIN{}你的需求和导入放在一边,否则这是行不通的.