我正在寻找从我的单独模块中导出所有常量的最有效,最易读的方法,该方法仅用于存储常量。
例如
use strict;
use warnings;
use Readonly;
Readonly our $MY_CONSTANT1 => 'constant1';
Readonly our $MY_CONSTANT2 => 'constant2';
....
Readonly our $MY_CONSTANT20 => 'constant20';
所以我有很多变量,并将它们全部列出在
@EXPORT = qw( MY_CONSTANT1.... );
中会很痛苦的。有没有一种优雅的方法可以导出所有常量,在我的情况下是只读变量(强制导出全部,而不使用@EXPORT_OK)。
最佳答案
实际常数:
use constant qw( );
use Exporter qw( import );
our @EXPORT_OK;
my %constants = (
MY_CONSTANT1 => 'constant1',
MY_CONSTANT2 => 'constant2',
...
);
push @EXPORT_OK, keys(%constants);
constant->import(\%constants);
使用Readonly将变量设置为只读的变量:
use Exporter qw( import );
use Readonly qw( Readonly );
our @EXPORT_OK;
my %constants = (
MY_CONSTANT1 => 'constant1',
MY_CONSTANT2 => 'constant2',
#...
);
for my $name (keys(%constants)) {
push @EXPORT_OK, '$'.$name;
no strict 'refs';
no warnings 'once';
Readonly($$name, $constants{$name});
}
关于perl - 从Perl模块导出所有常量(只读变量)的最有效方法是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31862515/