2

を使用して、およびではなく、パワード Perl モジュールimportからシンボルを作成するのが好きです。Perl は、インポートしたばかりの変数を認識していません。Exporterrequireuse

Perl モジュールのサンプル:

package TheModule;
use strictures;
use base 'Exporter';
use Const::Fast qw( const );
const our $TEST_VAR_1 => 'Test variable 1';
our @EXPORT_OK = qw( $TEST_VAR_1 );
our %EXPORT_TAGS = ( TEST_VAR => [qw( $TEST_VAR_1 )] );

Perl スクリプトのサンプル

#!/usr/bin/perl
use strictures;
require TheModule;
TheModule->import( ':TEST_VAR' );
printf "Test variable 1 contains: %s\n", $TEST_VAR_1;

次の例は機能しますが、require代わりに使用する必要がありuseます。

#!/usr/bin/perl
use strictures;
use TheModule ( ':TEST_VAR' );
printf "Test variable 1 contains: %s\n", $TEST_VAR_1;

環境$TEST_VAR_1内でインポートする方法は?require

4

1 に答える 1

7

our @EXPORT_TAGSする必要がありますour %EXPORT_TAGS。:)


わかりました、他に何か問題があります。コンパイル時、

printf "Test variable 1 contains: %s\n", $TEST_VAR_1;

ops に変換され$TEST_VAR_1ていますが、そのスコープにはまだ存在しません。

TheModule->import( ':TEST_VAR' );

実行時にのみ実行されます。そのため、require と import を前後に配置しない限りBEGIN{}、これは機能しません。

于 2013-01-15T16:59:43.817 に答える