http://www.perlmonks.org?node_id=935543


in reply to Substituting a comma only when it is preceded and followed by a bracket

use Modern::Perl; $_= 'blah blah, blah blah blah (blah, blah, blah), blah, blah'; while($_=~ s@\(([^\)]*?)h,@\($1h;@gs){} say;
Output : blah blah, blah blah blah (blah; blah; blah), blah, blah
Not quite what was asked for, but it does produce the requested output :P
  • Comment on Re: Substituting a comma only when it is preceded and followed by a bracket
  • Download Code

Replies are listed 'Best First'.
Re^2: Substituting a comma only when it is preceded and followed by a bracket
by Logicus (Initiate) on Nov 03, 2011 at 01:57 UTC

    Here's the proper one;

    while($_=~ s@\(([^\)]*?),@\($1;@gs){}
      Oh hang on, ok there was no check to see if the comma was followed by a bracket, so if there was no close bracket, it would replace every comma to the right of the open bracket, which technically would be incorrect because the task specified there to be a following bracket and a single bracket by itself would not count. However as long as the two brackets are there it works fine.