in reply to Re^3: split on the pattern of '),('
in thread split on the pattern of '),('

No it doesn't. The string you give contains "),(" three times, and my regex splits it at all three.

use Test::More tests => 5; my $string = '(1,"(text),(text)", 123),(2,"(string)", 234),(...)'; my @parts = split m{ [)] [,] [(] }x, $string; # Prove that the split worked properly... # Firstly, joining the parts back with '),(' recreates the original st +ring. my $joined = join '),(', @parts; is($joined, $string); # Secondly, none of the individual parts contain '),(' unlike($_, qr{\Q),(\E}) for @parts; done_testing();
perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Replies are listed 'Best First'.
Re^5: split on the pattern of '),('
by ikegami (Patriarch) on Sep 30, 2012 at 05:41 UTC

    For the input I gave, the code you gave produced:

    GOT: (1,"(text GOT: text)", 123 GOT: 2,"(string)", 234 GOT: ...)

    But surely, it should produce:

    GOT: 1,"(text),(text)", 123 GOT: 2,"(string)", 234 GOT: ...

      Your first "GOT" line contains a substring "),(" thus it was not fully split on that substring.

      perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
        Yes, and yours did split in the middle of the string.