my $str = do {my $i; join "", map {$_ eq '(' ? $i++ : $_ eq ')' && $i ? $i-- : $_ eq ',' && $i ? ($_ = ';') : 0; $_} split '[(,)]', $str};