读书人

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

发布时间: 2013-09-11 16:26:28 作者: rapoo

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的指针..所以就采用了上面的访问方式,程序经过测试。

读书人网 >perl python

热点推荐