我有一个哈希值哈希,如果相同子哈希的值与字符串匹配,则需要访问一个值。
这是我尝试访问的哈希的一部分:
{
'ACCOUNTINFO' => {
'ENTRY' => [
{
'Name' => 'fields_12'
},
{
'Name' => 'fields_24'
},
{
'content' => 'Piso 12',
'Name' => 'TAG'
},
{
'Name' => 'fields_23'
},
]
}
}
如果Name是“ Tag”,则需要“ content”的值。
我可以访问名称:
$name = $refia->{ACCOUNTINFO}{ENTRY}{Name};
但我找不到需要时访问内容的任何方法。
我已经明白了这一点:
if ($refia->{ACCOUNTINFO}{ENTRY}{Name} eq "TAG") {
###
}
谢谢
让我们看一下括号:
{ { [ {
您有一个HoHoAoH。您需要使用相同的括号来取消引用它:
$refia->{...}{...}[...]{...}
或更具体地说,
$refia->{ACCOUNTINFO}{ENTRY}[$i]{Name};
但是你不知道$i
。实际上,您想为尝试许多不同的值$i
,因此需要一个循环。
for my $i (0 .. $#{ $refia->{ACCOUNTINFO}{ENTRY} }) {
if ($refia->{ACCOUNTINFO}{ENTRY}[$i]{Name} eq 'TAG') {
...
}
}
但这很难遵循。更好的解决方案是将焦点缩小到结构的相关部分。
my $entries = $refia->{ACCOUNTINFO}{ENTRY};
for my $entry (@$entries) {
if ($entry->{Name} eq 'TAG') {
...
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句