Sure. Essentially, this is just a s/// operator. I've used angle brackets instead of slashes as the delimiter.
$str =~ s< ( # Start capturing (to $1) \s* # Optional whitespace (forgot this before) \" # starting with a quote [^\"]+ # 1 more of anything except a quote \" # another quote \s* # optional white space ) # end capture (,|$) # capture comma seperator (or EOL*) > < # /e option makes this becomes a code block # put the contents of $1 into a localised writable var #($1 is read only!) # and use the tr/// op to remove the commas (local $a = $1) =~ tr/,//d; # The last expression in the block is used as the # replacement expression, so we put the decomma'd localise +d var here. # not forgetting to put back the final comma # If it was there* $a .$2 ; >gex; #!" Global, Execute, ignore whitespace in regex
The weird comment (#!") I forgot to remove, is just used to keep the syntax parser in my editor happy. Sorry for any confusion it caused.
Update* Added to correct error spotted by LAI. Use Text::CSV instead.
Examine what is said, not who speaks.
The 7th Rule of perl club is -- pearl clubs are easily damaged. Use a diamond club instead.
In reply to Re: Re: Re: finding commas within commas
by BrowserUk
in thread finding commas within commas
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |