2013-07-05 39 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; 
} 
相關問題