Я новичок в 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
не работает, говоря, что это не ссылка на МАССИВ. Я чувствую, что я близок, но мне нужна эта строка, чтобы вставить хэш $CallTypeGroup
в качестве дочернего элемента в текущее место.
Любая помощь приветствуется!