http://qs321.pair.com?node_id=216261


in reply to Re: csv to flat-file
in thread csv to flat-file

All of these solutions are great, but they all assume that you can't have a comma as part of the field value.

Given that this is almost always possible, you have two choices:

  1. If commas as part of the field are escaped, then you can use a negative look-behind assertion:split(/(?<!\\),/, $line)
  2. If commas are not escaped, but can form part of a field delimitted with quotation-marks of some kind (" or ') then things get a lot uglier. I believe that there's a regex that could do it, but I could never figure it out and had to switch to a while loop and essentially chew through a line.

HTH