是否可以使用 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";
是否可以使用 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";
当然。您建议的方式几乎可行。尝试:
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
声明,分配的任何变量都将是全局变量,并且对脚本可见。
您需要通过编写$test
来声明变量Main.pl
our $test;
就像你在Config.pl
. 然后一切都会按您的预期进行。
最好使用模块:
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";