$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 localised var here. # not forgetting to put back the final comma # If it was there* $a .$2 ; >gex; #!" Global, Execute, ignore whitespace in regex