#!/usr/bin/env perl use strict; use warnings; use Data::Dumper; my %HoA; while (<>) { chomp; if (index($_, ',') != -1) { my @fields = split(/,/, ); push @{ $HoA{$fields[0]} }, $fields[5]; } else { warn "Line could not be parsed: $_\n"; } } continue { close ARGV if eof; } print Dumper \%HoA; __END__ $ perl test.pl test.csv $VAR1 = { 'seetha' => [ 'rew' ], 'Anand' => [ 'xyz', 'wer', 'ert', 'tre' ] }; #### #!/usr/bin/env perl use strict; use warnings; use Text::CSV; use Data::Dumper; my $csv = Text::CSV->new({ sep_char => ',' }); my %HoA; while (<>) { chomp; if ($csv->parse($_)) { my @fields = $csv->fields(); push @{ $HoA{$fields[0]} }, $fields[5]; } else { warn "Line could not be parsed: $_\n"; } } continue { close ARGV if eof; } print Dumper \%HoA; __END__ $ perl test.pl test.csv $VAR1 = { 'Anand' => [ 'xyz', 'wer', 'ert', 'tre' ], 'seetha' => [ 'rew' ] }; #### Anand,1,2,3,4,xyz Anand,2,3,4,5,wer Anand,3,4,4,4,ert seetha,1,2,3,4,rew Anand,2,2,2,2,tre