2013-07-05 35 views
0

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

例如 Module 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中访问它,结果如何?

+0

http://stackoverflow.com/questions/3109672/how-to-make-a-hash-available-in-another-module – daxim

回答

4

您可以访问变量是这样的:

$MyModule::tmp 

现在你已经知道如何访问变量,你就可以通过实验确认,在一个地方的变量进行的修改将是可见的别处。

我不确定你的问题是关于静态还是非静态。我知道这个区别在Perl中并不特别重要。

2

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

0

请勿在Exporter中使用变量。编写一个访问器方法(并将$ tmp更改为my变量)。

sub get_tmp { 
    return $tmp; 
} 
相关问题