use strict;
use warnings;
$| ++;
sub parser {
my $str = shift;
$str =~ m/^\[(\d*),(.*?)\]$(?{print "1 = $1\n2 = $2\n";my $tmp = $2;parser($tmp) if ($tmp ne "[]")})/;
}
my $str = "[0,[1,[2,[3,[4,[5,[6,[7,[8,[9,[]]]]]]]]]]]";
parser $str;
####
use threads;
use strict;
use warnings;
$| ++;
#open(STDERR, ">", "error.txt");
sub parser {
my $str = shift;
$str =~ m/^\[(\d*),(.*?)\]$(??{print "1 = $1\n2 = $2\n";my $tmp = $2;if ($tmp ne "[]") {my $t = threads->create("parser",$tmp); $t->join()}})/;}
my $str = "[0,[1,[2,[3,[4,[5,[6,[7,[8,[9,[]]]]]]]]]]]";
parser $str;
####