У меня есть простой XML, который я хочу прочитать на Perl и сделать хэш, содержащий все ключи для чтения.Доступ к возвращенным значениям в виде массива
Рассмотрим этот код:
my $content = $xml->XMLin("filesmap.xml")->{Item};
my %files = map { $_->{Path} => 1 } @$content;
Этот фрагмент отлично работает, когда XML-файл содержит много Item
тегов. Тогда $content
является ссылкой на массив. Но когда есть только один Item
, я получаю сообщение об ошибке при разыменовании как массив. Мое предположение состоит в том, что $content
является ссылкой на скаляр, а не на массив.
Какова практика, чтобы убедиться, что я получаю массив значений, считанных из XML?
Во-первых: [Не используйте XML :: Simple] (/http://stackoverflow.com/questions/33267765/why-is-xmlsimple-discouraged), и тогда все будет хорошо и легко. Дайте нам образец XML, и мы сможем дать вам точный ответ. – Sobrique
Появившиеся сообщения уже отвечают на мой вопрос. В общем, существует практика использования 'ref $ content eq 'ARRAY'', где мне нужно убедиться, что я получаю массивы, что, кстати, уродливо, но в моем случае XML я могу использовать параметр ForceArray или использовать другой xml lib. Благодаря! –