私はPerl Best Practicesの一部に従うことを容易にするため、ブック全体で使用されているスカラのいくつかをエクスポートするモジュールConstants
を作成します。特に、$EMPTY_STRING
というものは、私が書いたほぼすべてのPerlスクリプトで使うことができます。私が望むのは、これらのスカラーを自動的にエクスポートして、各スクリプトで明示的に定義することなく使用できるようにすることです。mod_perlでReadonly変数をエクスポートするにはどうしたらいいですか?
#!perl
package Example::Constants;
use Exporter qw(import);
use Readonly;
Readonly my $EMPTY_STRING => q{};
our @EXPORT = qw($EMPTY_STRING);
使用例:
Readonly our $EMPTY_STRING => q{}; # 'our' instead of 'my'
エラー:私はReadonly
宣言を変更した場合
Global symbol "$EMPTY_STRING" requires explicit package name
:
#!perl
use Example::Constants;
print $EMPTY_STRING . 'foo' . $EMPTY_STRING;
上記のコードを使用して、エラーを生成し次のようになります。
Attempt to reassign a readonly scalar
これはmod_perlでは不可能ですか?
私はすでに1、3をやっています4、簡潔さのために例文から除外しました。また、輸出者qw(輸入)を使用するのが好ましい方法で、qw(輸出)ベースは使用しません。モジュールをPerlRequireに追加すると、開始された各HTTPプロセスに1つのエラーが生成されます。 – cowgod
PerlModuleはどうですか? –
また、「use Example :: Constants;」を削除しましたか?あなたのスクリプトから? –