$ 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"', ' ', ' ' ] ] #### perl -MCSV -e'DDumper csv(in=>"test.csv",diag_verbose=>9,quote_char=>"\x27",escape_char=>undef,allow_loose_quotes=>1)' [ [ '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)"', ' ', ' ' ] ] #### $ perl -MCSV -e'DDumper{map{$_->{"PRODUCT CODE"}=>$_}@{csv(in=>"test.csv",diag_verbose=>9,quote_char=>"\x27",escape_char=>undef,allow_loose_quotes=>1,headers=>"auto")}}' { ' ' => { CATEGORY => '0 ', 'CATEGORY DESCRIPTION' => 'No Item', 'CODE DESCRIPTION' => '"INVALID CODE IN USER SUPPLIED DATA"', 'OPTIONAL CATEGORY' => ' ', 'OPTIONAL CATEGORY DESCRIPTION' => ' ', 'PRODUCT CODE' => ' ' }, '00100' => { CATEGORY => '1 ', 'CATEGORY DESCRIPTION' => 'Cat', 'CODE DESCRIPTION' => '"ORANGE CAT"', 'OPTIONAL CATEGORY' => ' ', 'OPTIONAL CATEGORY DESCRIPTION' => ' ', 'PRODUCT CODE' => '00100' }, 82131 => { CATEGORY => '94 ', 'CATEGORY DESCRIPTION' => 'Dog', 'CODE DESCRIPTION' => '"GREEN DOG"', 'OPTIONAL CATEGORY' => ' ', 'OPTIONAL CATEGORY DESCRIPTION' => ' ', 'PRODUCT CODE' => 82131 }, 82132 => { CATEGORY => '94 ', 'CATEGORY DESCRIPTION' => 'Dog', 'CODE DESCRIPTION' => '"\'JOHNS\' FLYING\' DOG (Start 2001)"', 'OPTIONAL CATEGORY' => ' ', 'OPTIONAL CATEGORY DESCRIPTION' => ' ', 'PRODUCT CODE' => 82132 }, 82133 => { CATEGORY => '94 ', 'CATEGORY DESCRIPTION' => 'Dog', 'CODE DESCRIPTION' => '"MAGENTA DOG (End 2009)"', 'OPTIONAL CATEGORY' => ' ', 'OPTIONAL CATEGORY DESCRIPTION' => ' ', 'PRODUCT CODE' => 82133 } }