我的perl脚本产生一个可变的,具有以下Data :: Dumper输出。
$VAR1 = [
{
'displayName' => 'unconfirmed',
'tagName' => 'unconfirmed'
},
{
'displayName' => 'new',
'tagName' => 'new'
},
{
'displayName' => 'started',
'tagName' => 'started'
},
{
'displayName' => 'reopened',
'tagName' => 'reopened'
},
{
'displayName' => 'resolved',
'tagName' => 'resolved'
}
];
重新创建此输出的perl代码如下所示:
my $foo = ([
{
'displayName' => 'unconfirmed',
'tagName' => 'unconfirmed'
},
{
'displayName' => 'new',
'tagName' => 'new'
},
{
'displayName' => 'started',
'tagName' => 'started'
},
{
'displayName' => 'reopened',
'tagName' => 'reopened'
},
{
'displayName' => 'resolved',
'tagName' => 'resolved'
}
]);
print Dumper($foo);
问题A:如何访问内容?
thanx的帮助!以下是如何访问结构的示例。
for my $item (@{$foo}) {
print $item->{tagName};
}
问题B:对语言上下文有什么好的参考:哈希,数组,不同括号的含义等?
注意:结构本身是几个soap调用的结尾,xpath(SOM->valueof
)和直接引用($som->{tag1}->{tag2}
),但我希望这个问题是更容易提问和回答。
答案 0 :(得分:4)
Perl不会创建无密钥哈希。你在$ foo看到的是一个数组引用,所以你必须做print $foo->[$_]{displayName} for 0 .. $#{$foo}
。
好吧,至于参考,你不需要那个,你需要一个完整的介绍文本。请参阅http://perl-tutorial.org
答案 1 :(得分:3)
回答A:
由于您已使用散列和数组的引用(它们是标量),因此您应该取消引用标量以访问元素。
例如,如果您愿意访问第三个哈希,则可以将其作为:
访问$foo->[2]->{"displayName"}; # accesses 'started'
$foo->[2]->{"tagName"}; # accesses 'started'
回答B:
有关参考资料,请参阅this。
答案 2 :(得分:0)
学习像这样的复杂Perl数据结构的良好开端是Data Structures Cookbook,它包含在每个Perl安装中(在命令行上键入perldoc perldsc
)。