Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用require从导出器Perl模块导入符号?_Perl_Import_Module_Perl Module_Exporter - Fatal编程技术网

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

如何使用require从导出器Perl模块导入符号?,perl,import,module,perl-module,exporter,Perl,Import,Module,Perl Module,Exporter,我喜欢使用require而不是use从导出器导入符号。Perl不知道他刚导入的变量 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

我喜欢使用
require
而不是
use
导出器导入
符号。Perl不知道他刚导入的变量

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\u VAR\u 1

我们的@EXPORT\u标签应该是
我们的%EXPORT\u标签
:)


好吧,还有别的问题。在编译时,当

printf "Test variable 1 contains: %s\n", $TEST_VAR_1;
正在转换为ops,
$TEST\u VAR\u 1
在该范围内尚不存在,因为

TheModule->import( ':TEST_VAR' );

仅在运行时执行。因此,除非您在require和import周围放置一个
BEGIN{}
,否则这将无法工作。

不幸的是,这只是一个我现在已经修复的打字错误。这个问题仍然存在。