foreach my $n (keys %emp) { push(@{$data{'A'}},$emp{$n}{'Emp'}) if $emp{$n}{'Org'}=~/ABC/; push(@{$data{'B'}},$emp{$n}{'Emp'}) if $emp{$n}{'Org'}=~/DEF/; } #### foreach(keys %data){ open(DATA,">group$_.txt")||die"Couldn't open file for $_:$!"; print DATA join("\n",@{$Data{$_}}); close(DATA); }