5

是否可以使用 require 在另一个 perl 脚本中访问声明的全局变量的值?

例如。

配置文件

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

our $test = "stackoverflow"

主文件

#!/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 回答