我知道,我可以使用Exporter和@ EXPORT_OK / @ EXPORT来使用其他模块的子程序,但是如何访问其他模块的变量呢? 在perl中,另一个问题是静态变量和非静态变量之间存在差异吗?换句话说,我可以通过模块名称和模块引用来访问其他模块的变量吗?
例如 模块MyModule.pm;
package MyModule;
our $tmp=1;
sub new{
$this={};
bless $this;
return $this;
}
1;
perl file test.pl
Use MyModule;
我是如何访问test.pl中的$ tmp的?并且,如果我在test.pl中将$ tmp更改为2,那么如果我在另一个perl文件temp2.pl中访问它会得到什么结果?
答案 0 :(得分:4)
您可以像这样访问变量:
$MyModule::tmp
现在您已经知道如何访问变量,您将能够通过实验确认在一个地方对变量所做的修改将在其他地方可见。
我不确定你的问题是关于静态与非静态的。我知道这种区别在Perl中并不特别重要。
答案 1 :(得分:2)
实际上你也可以使用Exporter导出变量!那说你可能不想。正如FMc所提到的,您可以使用完全限定的名称(使用::
)来访问其他模块中的包变量。包变量是使用our
创建的,该技术不适用于my
变量(因此名称:-))
答案 2 :(得分:0)
不要在Exporter
中使用变量。改为编写一个访问器方法(并将$ tmp更改为my
变量)。
sub get_tmp {
return $tmp;
}