例
out.pl:
(my|our|local|global|whatever???) var = "test";
require("inside.pm");
inside.pm:
print $var;
我不想使用软件包-这压倒了我的需求:)
谢谢!
最佳答案
它将与our
一起使用。
$ cat out.pl
our $var = "test";
require("inside.pm");
$ cat inside.pm
print "Testing...\n";
print "$var\n";
$ perl out.pl
Testing...
test
之所以起作用,是因为
our
使$var
成为全局变量,并且在定义了inside.pm
的范围内执行$var
。不确定是否建议使用该技术,但这仍然是一个有趣的问题!编辑:需要基于注释来澄清(好的补丁)答案:
从the documentation on the Perl function
our
:our
将简单名称与当前包中的包(读取:全局)变量相关联,以在当前词法范围内使用。换句话说,our
具有与my
或state
相同的作用域规则,但不一定创建变量。因此,使用
our
,我们将使用当前包(此处可能是$var
)获得main
,并可以在其范围内使用它。实际上,它对您需要的文件中的代码是“全局”的。在没有
our
的情况下引入了真正的全局变量,因为变量默认为全局变量。但是我不知道有人会推荐他们。