#!/usr/bin/perl -w use strict; use Text::CSV; use Data::Dumper; # a core module use Data::Dump qw(pp); open my $io, '<', \q{"My Company","Gavin","Henry ","ghenry@ghenry.co.uk"," 1.00"}; my $csv = Text::CSV->new(); # nothing "fancy" needed here # defaults are fine while ( my $row = $csv->getline($io) ) { my @fields =map { s/^\s*//; #delete leading spaces s/\s*$//; #delete trailing spaces $_; #this is the "return value" from map #map returns the value of the last #statement - without this $_; you #get the zero or non-zero scalar value #of the last s/// statement } @$row; print "Using pp from Data::Dump...\n"; print pp \@fields; print "\n"; print "Using Dumper from Data::Dumper...\n"; print Dumper \@fields; print "\n"; print "5th field is $fields[4]\n"; } __END__ Prints: Using pp from Data::Dump... ["My Company", "Gavin", "Henry", "ghenry\@ghenry.co.uk", "1.00"] Using Dumper from Data::Dumper... $VAR1 = [ 'My Company', 'Gavin', 'Henry', 'ghenry@ghenry.co.uk', '1.00' ]; 5th field is 1.00