will handle them fine. As for unescaped quotes inside quotes, I can't imagine there's a way to automate that. Personally, I'd parse the file with Text::CSV_XS and check for parse sucess, writing successfull parses to one file and unsuccessful ones to another and then escape the quotes in the bad file by hand :-(.