5

requireを使用して別のperlスクリプトで宣言されたグローバル変数の値にアクセスすることは可能ですか?

例えば。

Config.pl

#!/usr/bin/perl
use warnings;
use strict;

our $test = "stackoverflow"

Main.pl

#!/usr/bin/perl
use warnings;
use stricts;

require "Config.pl"

print "$test\n";
print "$config::test\n";
4

3 に答える 3

5

もちろん。あなたが提案した方法はほとんど機能します。試す:

Config.pl

use warnings;
use strict;

our $test = "stackoverflow";

およびメインプログラム:

#!/usr/bin/perl
use warnings;
use strict;  

require "Config.pl";

our $test;

print "$test\n";

を呼び出すrequireと、ファイルは呼び出し元と同じ名前空間で実行されます。したがって、名前空間やmy宣言がないと、割り当てられた変数はグローバルになり、スクリプトに表示されます。

于 2012-05-06T12:08:52.807 に答える
3

あなたは書くことによって変数$testを宣言する必要がありますMain.pl

our $test;

あなたがするようにConfig.pl。その後、すべてが期待どおりに機能します。

于 2012-05-06T12:09:08.530 に答える
2

モジュールを使用することをお勧めします。

MyConfig.pm:(「Config」と呼ばれるコアパッケージがすでにあります。)

package MyConfig;

use strict;
use warnings;
use Exporter qw( import );

our @EXPORT_OK   = qw( $test );
our %EXPORT_TAGS = ( ALL => \@EXPORT_OK );

our $test = "stackoverflow";

1;

main.pl

use strict;
use warnings;
use MyConfig qw( :ALL );
print "$test\n";
于 2012-05-07T00:26:02.450 に答える