use strict; use warnings; use Data::Dumper; my @key = qw(x y z); my %hash; while () { chomp; @hash{@key} = split ','; print Dumper \%hash; } __DATA__ a,b,c a,b a,b,c,d a,,,