Я анализирую xml-файлы в Perl, и, кажется, все отлично работает с одной проблемой.У меня есть файлы с одинаковой схемой, но они возвращают разные типы данных из анализатора.Вот упрощенный пример:
<tests>
<test>
<data1>Hi</data1>
<data2>Hello</data2>
</test>
<test>
<data1>Hi2</data1>
<data2>Hello2</data2>
</test>
</tests>
В дампе это возвращает следующее: (Обратите внимание на тест, представляющий собой массив из двух хешей)
$VAR1 = {
'test' => [
{
'data2' => 'Hello',
'data1' => 'Hi'
},
{
'data2' => 'Hello2',
'data1' => 'Hi2'
}
]
};
Теперь для аналогичногонабор данных, но только с одной «тестовой» сущностью, например, так:
<tests>
<test>
<data1>Hi</data1>
<data2>Hello</data2>
</test>
</tests>
Возвращает похожие данные, ЗА ИСКЛЮЧЕНИЕМ тестовой сущности больше не массив, а хеш-форму единственного числа:
$VAR1 = {
'test' => {
'data2' => 'Hello',
'data1' => 'Hi'
}
};
Моя дилемма в том, что мой код ожидает там массив, так как это норма.Но по малой вероятности, когда существует только одна сущность, она вернет хеш для этой сущности.Мой вопрос заключается в том, как я могу обрабатывать хэш-сущность, как если бы это был массив.Или проверить это?
Прямо сейчас мой код для получения массива выглядит так:
foreach $test (@{$data->{'tests'}->{'test'}})
{
do something with $test
}
Но с хэшем он выдает ошибку "Не ссылка на массив".Я надеюсь, что это достаточно подробно!Спасибо !!!