首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

Perl超难的哈希、数组混合访问

2013-09-11 
Perl求助:超难的哈希、数组混合访问本帖最后由 u011771601 于 2013-09-09 22:50:50 编辑Simple XML 读出的

Perl求助:超难的哈希、数组混合访问
本帖最后由 u011771601 于 2013-09-09 22:50:50 编辑 Simple XML 读出的值如下,我想访问其中的'Identification'元素怎么访问呢?

$VAR1 = {

          'Version' => '1',

          'Rule' => [

                    {

                      'Identification' => ‘ABCC', 
                      'Name' => A,
                      'Operation' => '2'

                    },

                  ]

        };


尝试用下面的,但是发现输出是空的。
${{@{$rules->{‘Rule’}}[0]}->{‘Identification’}}


[解决办法]

$VAR1->{'Rule'}[0]->{'Identification'}


(perl我是外行,下面说的很可能是错的,但上面的代码结果是对的)
我的理解是只有变量名前需要加$@,在值前面不用,因为perl已经知道这个值是什么类型。所以虽然$VAR1->{'Rule'}是一个数组,但不用写@{$VAR1->{'Rule'}}(好像这样写又把数组变成hash table了,搞不懂¥$@3)。
[解决办法]
#! usr/bin/perl

use strict;
my $VAR1 = {

    'Version' => '1',

    'Rule' => [

        {

            'Identification' => 'ABCC',
            'Name' => 'A',
            'Operation' => '2'



        },

              ]
};
print "$VAR1->{Rule}->[0]->{Identification}\n";


最后的输出结果就是访问方式,变量$VAR1是一个指向hash的指针,而它所指向hash表的Rule元素又是一个指向数组的指针,而这个数组的第一个元素又是一个指向hash的指针..所以就采用了上面的访问方式,程序经过测试。

热点排行