この本全体で使用されているいくつかのスカラーをエクスポートするモジュールを作成することで、いくつかの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 では不可能ですか?