$ cat test.csv 'PRODUCT CODE','CATEGORY','CATEGORY DESCRIPTION','CODE DESCRIPTION','OPTIONAL CATEGORY','OPTIONAL CATEGORY DESCRIPTION' ' ','0 ','No Item',"INVALID CODE IN USER SUPPLIED DATA",' ',' ' '00100','1 ','Cat',"ORANGE CAT",' ',' ' '82131','94 ','Dog',"GREEN DOG",' ',' ' '82132','94 ','Dog',"'JOHNS' FLYING' DOG (Start 2001)",' ',' ' '82133','94 ','Dog',"MAGENTA DOG (End 2009)",' ',' ' $ perldoc -m CSV | head -7 use Text::CSV_XS qw( csv ); use Data::Peek; BEGIN { *CSV:: = \%Text::CSV_XS::; } $VERSION = "0.02"; 1; $ perl -MCSV -e'DDumper csv(in=>"test.csv",diag_verbose=>9,quote_char=>"\x27",escape_char=>undef)' # CSV_XS ERROR: 2034 - EIF - Loose unescaped quote @ rec 4 pos 24 '82132','94 ','Dog',"'JOHNS' FLYING' DOG (Start 2001)",' ',' ' ' ^ [ [ 'PRODUCT CODE', 'CATEGORY', 'CATEGORY DESCRIPTION', 'CODE DESCRIPTION', 'OPTIONAL CATEGORY', 'OPTIONAL CATEGORY DESCRIPTION' ], [ ' ', '0 ', 'No Item', '"INVALID CODE IN USER SUPPLIED DATA"', ' ', ' ' ], [ '00100', '1 ', 'Cat', '"ORANGE CAT"', ' ', ' ' ], [ 82131, '94 ', 'Dog', '"GREEN DOG"', ' ', ' ' ] ]