2011-09-05 60 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 
相关问题