首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl:取消对散列的散列的引用

Perl:取消对散列的散列的引用
EN

Stack Overflow用户
提问于 2013-05-15 15:10:31
回答 2查看 6K关注 0票数 4

考虑示例代码:

代码语言:javascript
复制
$VAR1 = {
      'en' => {
              'new' => {
                       'style' => 'defaultCaption',
                       'tts:fontStyle' => 'bold',
                       'id' => 'new'
                     },
              'defaultCaption' => {
                                  'tts:textAlign' => 'left',
                                  'tts:fontWeight' => 'normal',
                                  'tts:color' => 'white',

                                }
            },
      'es' => {
              'defaultSpeaker' => {
                                  'tts:textAlign' => 'left',
                                  'tts:fontWeight' => 'normal',

                                },
              'new' => {
                       'style' => 'defaultCaption',
                       'tts:fontStyle' => 'bold',
                       'id' => 'new'
                     },
              'defaultCaption' => {
                                  'tts:textAlign' => 'left',
                                  'tts:fontWeight' => 'normal',

                                }
            }
    };

我将其作为引用返回,返回\%hash

我该如何取消引用呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-15 15:11:57

%$hash。有关详细信息,请参阅http://perldoc.perl.org/perlreftut.html

如果您的散列是由函数调用返回的,则可以执行以下任一操作:

代码语言:javascript
复制
my $hash_ref = function_call();
for my $key (keys %$hashref) { ...  # etc: use %$hashref to dereference

或者:

代码语言:javascript
复制
my %hash = %{ function_call() };   # dereference immediately

要访问散列中的值,可以使用->运算符。

代码语言:javascript
复制
$hash->{en};  # returns hashref { new => { ... }. defaultCaption => { ... } }
$hash->{en}->{new};     # returns hashref { style => '...', ... }
$hash->{en}{new};       # shorthand for above
%{ $hash->{en}{new} };  # dereference
$hash->{en}{new}{style};  # returns 'defaultCaption' as string
票数 8
EN

Stack Overflow用户

发布于 2013-05-15 15:41:57

试试下面这样的东西,可能会对你有帮助:

代码语言:javascript
复制
my %hash = %{ $VAR1};
        foreach my $level1 ( keys %hash) {
            my %hoh = %{$hash{$level1}};
            print"$level1\n";
            foreach my $level2 (keys %hoh ) {
               my %hohoh = %{$hoh{$level2}};
               print"$level2\n";
               foreach my $level3 (keys %hohoh ) {
                        print"$level3, $hohoh{$level3}\n";
                }
             }
        }

此外,如果您想访问特定的密钥,您可以这样做

my $test = $VAR1->{es}->{new}->{id};

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16558872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档