use Text::CSV::Hashify;
use Data::Dumper;
my $filename = 'bad.csv';
$obj = Text::CSV::Hashify->new( {
file => $filename,
format => 'hoh',
key => "PRODUCT CODE",
quote_char => "'",
escape_char => "|", #wont be found in the data, turn off escaping
auto_diag => 1,
} );
print Dumper($obj->all);
####
'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)",' ',' '
####
# CSV_XS ERROR: 2034 - EIF - Loose unescaped quote @ rec 4 pos 24
$VAR1 = {
' ' => {
'CODE DESCRIPTION' => '"INVALID CODE IN USER SUPPLIED DATA"',
'OPTIONAL CATEGORY DESCRIPTION' => ' ',
'CATEGORY' => '0 ',
'PRODUCT CODE' => ' ',
'CATEGORY DESCRIPTION' => 'No Item',
'OPTIONAL CATEGORY' => ' '
},
'82131' => {
'CODE DESCRIPTION' => '"GREEN DOG"',
'CATEGORY' => '94 ',
'OPTIONAL CATEGORY DESCRIPTION' => ' ',
'PRODUCT CODE' => '82131',
'OPTIONAL CATEGORY' => ' ',
'CATEGORY DESCRIPTION' => 'Dog'
},
'00100' => {
'OPTIONAL CATEGORY' => ' ',
'CATEGORY DESCRIPTION' => 'Cat',
'CODE DESCRIPTION' => '"ORANGE CAT"',
'CATEGORY' => '1 ',
'OPTIONAL CATEGORY DESCRIPTION' => ' ',
'PRODUCT CODE' => '00100'
}
};