Примерно так:

s/ID=(?=[^}]+=[^}]+})//g;
s/=/=>/g;
s/([\]}])/$1,/g;
eval '$struct = {' . $_ . '};';

Ну, только нужно проверить, не содержат ли значения в кавычках символы
[=}\]].

16 ноября 2009 г. 13:40 пользователь Pavel <[email protected]> написал:

> Приветствую, коллеги!
> Столкнулся с одной задачкой, но прежде чем изобретать велосипед,
> хотел бы обратиться к сообществу.
> Есть сервер отвечающий на запросы вот таким вот текстом (между тире):
> ---------------------------------------
> TYPE1=[
> { ID=One NAME="Один айди" }
> { ID=Two NAME="Айди номер два" }
> { ID=Some NAME="Еще что-то" }
> { ID=Yeah NAME="Вот так вот" }
> ]
> TYPE2=[
> ]
> ----------------------------------------
> Задача состоит в том чтобы спарсить подобные ответы в структуры perl (хэши,
> массивы, ...) (ответы могут различаться по структуре, иметь вложенные
> массивы данных, и т.п.)
> В принципе всевозможные комбинации конечны, и можно написать n-ное кол-во
> регэкспов которые будут парсить
> этот вывод, но возможно есть какие-то решения наподобие модулей
> Config::Any::INI, которые позволяют обрабатывать подобные структуры и
> получать на выходе структуры perl?
> Спасибо.
>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>



-- 
Andrei Protasovitski
< andrei[dot]protasovitski[at]gmail[dot]com >
Diemen, Netherlands
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить