2011-09-05 63 views
0

內部訪問一個哈希在主命名空間,我有我的主要Perl腳本包含如何從一個模塊

my $System = { 
    Path => 
    { 
     root => 'hello' 
    } 
} 

print $System->{'Path'}->{'root'}; # prints 'hello' 

如何從外部模塊訪問$System->{'Path'}->{'root'}變量?

我知道我可以使用main::命名空間檢索全局變量,例如$main::x,但以下操作不起作用$main::System->{'Path'}->{'root'}

我也試過不同的語法,但我無法得到它。

我在做什麼錯?

+0

詞彙('my')變量,不以任何命名空間包存在。 – ikegami

回答

2

my聲明的變量只具有詞法範圍,並且在包中不可見。

而是用our聲明它。

+0

如果我以這種方式聲明變量,它是否會改變我的實際主腳本中的某些內容? –

+2

是的,範圍擴大了,所以行爲是不同的。它可能導致錯誤。不要只是改變這一行,努力瞭解標識符'$ System'的有效位置,並測試你的程序。 – daxim

1

「與作用域應對」:

http://perl.plover.com/FAQs/Namespaces.html 
相關問題