my $csv = Text::CSV_XS->new ({ binary => 1, auto_diag => 1 }); open my $fh2, "<:encoding(utf8)", $file or die "$file: $!"; my $columns = $csv->getline ($fh2); for (@$columns) { s/^\s+//; s/\s+$//; } my %row; $csv->bind_columns (\@row{@$columns}); while ($csv->getline ($fh2)) { process_row (\%row); }