print hash key with converted hash xml simple

时间:2014-03-31 09:36:43

标签: xml perl hash xml-simple

我是perl的新手,我想获取使用XML::SIMPLE模块生成的哈希表的密钥 像这样

$data = $xml->XMLin("tp.xml");

这是生成的结构

$VAR1 = {
      'technical-profile' => {
                             'WEB' => {
                                      'mandatory-param' => {
                                                           'value' => 'high',
                                                           'name' => 'screenCapability',
                                                           'case-sensitive' => 'no'
                                                         }
                                    },
                             'WAP/PDA' => {
                                          'description' => 'wap/sparphone',
                                          'mandatory-param' => {
                                                               'value' => 'low|intermediate',
                                                               'name' => 'screenCapability',
                                                               'case-sensitive' => 'no'
                                                             }
                                        },
                             'WAP' => {
                                      'description' => 'wap/sparphone',
                                      'mandatory-param' => {
                                                           'value' => 'low',
                                                           'name' => 'screenCapability',
                                                           'case-sensitive' => 'no'
                                                         }
                                    }
                           }
    };

我试过这个

print "Key: $_" foreach (keys%data);

但我一无所获;我想打印WEB WAP/PDAWAP请问这有什么可能吗?

1 个答案:

答案 0 :(得分:1)

在您制作的每个perl脚本的顶部添加use strict;use warnings;

如果你这样做了,你会得到以下错误:

Global symbol "%data" requires explicit package name

您的数据是分配给$data的hashref。因此,要查看它的键,请执行以下操作:

print "Key: $_\n" for keys %$data;

对于哈希的第二级上的三个值,您将使用以下内容:

print "Key: $_\n" for keys %{$data->{technical-profile}};

应输出(按随机顺序):

Key: WEB
Key: WAP/PDA
Key: WAP