0

我知道,我可以使用 Exporter 和 @EXPORT_OK/@EXPORT 来使用其他模块的子程序,但是我怎样才能访问其他模块的变量呢?另一个问题,在perl中,静态变量和非静态变量有区别吗?换句话说,我可以通过模块名称和模块引用来访问其他模块的变量吗?

例如模块 MyModule.pm;

package MyModule;
our $tmp=1;
sub new{
$this={};
bless $this;
return $this;
}
1;

perl 文件 test.pl

Use MyModule;

我如何访问 test.pl 中的 $tmp?并且,如果我在test.pl 中将$tmp 更改为2,如果我在另一个perl 文件temp2.​​pl 中访问它会产生什么结果?

4

3 回答 3

4

您可以像这样访问变量:

$MyModule::tmp

既然您知道如何访问该变量,您将能够通过实验确认在一处对变量所做的修改将在其他地方可见。

我不确定您关于静态与非静态的问题是什么。我确实知道这种区别在 Perl 中并不是特别重要。

于 2013-07-05T04:41:27.797 回答
2

事实上,您也可以使用Exporter导出变量!那就是说你可能不想。正如 FMc 所提到的,您可以使用完全限定名称(with ::)来访问其他模块中的包变量。包变量是使用创建的our,此技术不适用于my变量(因此名称:-))

于 2013-07-05T05:31:52.203 回答
0

不要在Exporter. 改为编写访问器方法(并将 $tmp 更改为my变量)。

sub get_tmp {
    return $tmp;
}
于 2013-07-05T14:17:26.910 回答