您好我有一个名为main.pl的perl脚本。这个perl脚本调用了三个名为sub1.pm
,sub2.pm
和sub3.pm
的perl模块。 sub.pm
正在返回sub2.pm
和sub3.pm
中使用的三个哈希值。我将哈希作为输入参数传递给sub2和sub3。相反,有什么方法可以全局声明哈希值,以便这两个perl模块可以看到它?
答案 0 :(得分:2)
当你声明非全局变量时,它是通过放置" my"在它面前。即:
my $local_variable = 4;
你想要做的是替换"我的"用"我们的"并确保它位于子程序之外。即:
our $global_variable = 4;
如果您希望在其他模块中使用它,可以通过以下方式添加它:
use vars qw($global_variable);
既然我告诉你该怎么做,我会告诉你不要这样做。强烈建议不要使用全局变量。您应该尽可能使用局部变量。这样做的原因是,如果您正在处理更大的项目或具有多个编码器的项目,那么您可能会发现未知错误,因为某些变量可能与您期望的不同,因为它们在其他地方已被更改。
答案 1 :(得分:0)
您在模块XY中使用
声明的每个变量our $var;
our %hash;
或
use vars qw($var %hash);
被声明为全局且可用作
$XY::var
%XY::hash;
在每个其他perl模块中(如果模块已被使用/需要)。
HTH