【问题标题】:How to access a hash in the main namespace from inside a module如何从模块内部访问主命名空间中的哈希
【发布时间】:2011-09-06 01:07:40
【问题描述】:

我的主要 Perl 脚本包含

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

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

如何从外部模块访问$System->{'Path'}->{'root'} 变量?

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

我也尝试了不同的语法,但我无法得到它。

我做错了什么?

【问题讨论】:

  • 词法 (my) 变量不存在于任何 命名空间包中。

标签: perl strawberry-perl


【解决方案1】:

my 声明的变量只有词法范围,在包中不可见。

改用our 声明它。

【讨论】:

  • 如果我以这种方式声明变量,它会改变我实际的主脚本中的某些内容吗?
  • 是的,范围扩大了,所以行为不同。它可能会导致错误。不要只是换行,要努力了解标识符 $System 的有效位置并测试您的程序。
【解决方案2】:

“处理范围”:

  http://perl.plover.com/FAQs/Namespaces.html

【讨论】:

    猜你喜欢
    • 2011-04-08
    • 2015-01-08
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 2014-12-12
    相关资源
    最近更新 更多