【发布时间】:2012-09-23 19:23:48
【问题描述】:
我是 Perl 新手,所以你必须原谅我的代码。
我正在读取一个树形结构的文件(如 xml,实际上不是),我想通过树foreach,如果某个“节点”没有子节点,我想插入它.很简单。
这是我的代码:
foreach $key ( @{$struct->{'transferBatch'}->{'callEventDetails'} } ) {
foreach ( keys %{$key} ) {
if ( $_ eq "mobileTerminatedCall" ) {
if ( defined $key->{$_}->{'basicServiceUsedList'} ) {
if ( defined $key->{$_}->{'basicServiceUsedList'}[0]->{'chargeInformationList'} ) {
if ( not defined $key->{$_}->{'basicServiceUsedList'}[0]->{'chargeInformationList'}[0]->{'CallTypeGroup'} ) {
$CallTypeGroup = {
"CallTypeLevel1:" => "0",
"CallTypeLevel2:" => "0",
"CallTypeLevel3:" => "0"
};
#Doesn't work!
$key->{$_}->{'basicServiceUsedList'}[0]->{'chargeInformationList'}[0]{'CallTypeGroup'} = $CallTypeGroup;
}
}
}
}
}
}
迭代工作正常,但我的 push 调用失败,说它不是 ARRAY 引用。我觉得我很接近了,但我需要该行将 $CallTypeGroup 哈希作为一个孩子插入到当前位置。
感谢任何帮助!
【问题讨论】:
-
使用引用将复杂的数据结构存储为标量。