gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:37:57 24 4
gpt4 key购买 nike

我喜欢 import来自 Exporter 的符号使用 require 驱动的 Perl 模块而不是 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;

如何导入 $TEST_VAR_1require 内环境?

最佳答案

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

好吧,还有其他问题。在编译时,当

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

正在转化为操作, $TEST_VAR_1尚不存在于该范围内,因为
TheModule->import( ':TEST_VAR' );

仅在运行时执行。所以,除非你把 BEGIN{}围绕您的要求和导入,这是行不通的。

关于perl - 如何使用 require 从 Exporter Perl 模块导入符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14342426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com