<?xml version="1.0" encoding="windows-1252"?>
<node id="228351" title="Re: Parsing Text into Arrays.." created="2003-01-20 09:48:29" updated="2005-06-09 07:19:04">
<type id="11">
note</type>
<author id="44950">
I0</author>
<data>
<field name="doctext">
&lt;code&gt;
use strict;
use Data::Dumper;
sub lpcarray_to_array{
    my ($larray)=@_;
    my @result=();
    my $re = $larray;
    $re =~ s/((\([[{])|([]}]\))|.)/${[')','']}[!$3]\Q$1\E${['(','']}[!$2]/gs;
    $re = join'|',map quotemeta,eval{$larray=~/$re/};
    die $@ if $@;
    while( $larray=~/(\(\{($re)\}\))|(\(\[($re)\]\))|("([^"]*)")|(\d+)/g ){
        if( $1 ){
            push @result,[lpcarray_to_array($2)];
        }elsif( $3 ){
            push @result,{lpcarray_to_array($4)};
        }elsif( $5 ){
            push @result,$6;
        }else{
            push @result,$7;
        }
    }
    return @result;
}
print Dumper lpcarray_to_array qq(({ 1, 2, "three", 0, ({ "internal", "array", 0, }) "end", }));
print Dumper lpcarray_to_array qq(([ "key1": "value", "key2": ({ "value", "array", }) ]));
&lt;/code&gt;</field>
<field name="root_node">
228312</field>
<field name="parent_node">
228312</field>
</data>
</node>
