使用require访问全局变量的值?

时间:2012-05-06 12:04:00

标签: perl

是否可以使用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";

3 个答案:

答案 0 :(得分:4)

确定。您建议几乎的方式有效。尝试:

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声明,则分配的任何变量都将是全局变量,并且对脚本可见。

答案 1 :(得分:2)

您需要通过编写

$test中声明变量Main.pl
our $test;

Config.pl一样。然后一切都会按预期运作。

答案 2 :(得分: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";