use strict; use Data::Dumper; my %hoh; while(){ my $line=$_; chomp($line); my @values=split(/,/,$line); my @type_val=splice(@values,3,2); my $ref_a=\@type_val; my ($type_value,$key_type)=split(/\./,$values[2]); push(@{$hoh{$key_type}},$type_value); #works fine push(@{$hoh{$key_type}},{$type_value},$ref_a); #Does NOT WORK } print Dumper(\%hoh); __DATA__ abc,def,excel1.xls,12,some,time hj,uyi,excel2.xls,12,more,time2