#!perl use strict; use warnings; my @columns = qw(col1 col2 col3); my @data = (); while () { chomp; my %tmp; @tmp{@columns} = split ','; push @data, \%tmp; } use Data::Dumper; print Dumper \@data; __DATA__ one,two,three four,five,six