我正在寻找从我的单独模块中导出所有常量的最有效,最易读的方法,该方法仅用于存储常量。
例如

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/

10-12 19:34