我试图通过创建一个导出本书中使用的几个标量的模块来更容易地遵循一些Perl 最佳实践。Constants
特别是$EMPTY_STRING
,我几乎可以在我编写的每个 Perl 脚本中使用它。我想要的是自动导出这些标量,这样我就可以使用它们而无需在每个脚本中明确定义它们。
#!perl
package Example::Constants;
use Exporter qw( import );
use Readonly;
Readonly my $EMPTY_STRING => q{};
our @EXPORT = qw( $EMPTY_STRING );
一个示例用法:
#!perl
use Example::Constants;
print $EMPTY_STRING . 'foo' . $EMPTY_STRING;
使用上面的代码会产生错误:
Global symbol "$EMPTY_STRING" requires explicit package name
如果我将Readonly
声明更改为:
Readonly our $EMPTY_STRING => q{}; # 'our' instead of 'my'
错误变为:
Attempt to reassign a readonly scalar
这对 mod_perl 来说是不可能的吗?