my %groups = map{ open my $fh, '>', "Group$_" or die $!; $_ => $fh; } qw[ABC DEF ...]; for my $empNo (keys %emp) { for my $grp (keys %groups) { #! Note the {} (bare block) around the filehandle are necessary. print { $groups{$grp} } $emp{$empNo}{Emp} if $emp{$empNo}{Org} =~ m[$grp]; } }