in reply to
Parsing Text into Arrays..
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": ({ "valu
+e", "array", }) ]));