use strict; use warnings; use Text::CSV_XS; use Data::Dumper; my %data; my $csv = Text::CSV_XS->new( { binary => 1 } ) or die "Cannot use CSV: " . Text::CSV->error_diag(); while ( my $row = $csv->getline(*DATA ) ) { $data{ shift @{$row} } = $row; } $csv->eof or $csv->error_diag(); # Please print out your data as you # specified as you wanted :) print Dumper \%data; __DATA__ 100.1,A ,25, 36,56,89,45,36,56 25.1,B,232,565,65,56,56,48,25 103.1,C,25,5,6,9,4,5,56,889,9 10.1,D,5,6,5,8,9,8,12,23,36,6