如何全局声明一个变量,以便它对所有perl模块都可见?

时间:2016-01-29 10:48:53

标签: perl perl-module

您好我有一个名为main.pl的perl脚本。这个perl脚本调用了三个名为sub1.pmsub2.pmsub3.pm的perl模块。 sub.pm正在返回sub2.pmsub3.pm中使用的三个哈希值。我将哈希作为输入参数传递给sub2和sub3。相反,有什么方法可以全局声明哈希值,以便这两个perl模块可以看到它?

2 个答案:

答案 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