... my @colvalues1; my @colvalues2; my @colvalues3; ... push @colvalues1, $allcols[0],':',$allcols[1],"\n"; push @colvalues2, $allcols[0],':',$allcols[2],"\n"; push @colvalues3, $allcols[0],':',$allcols[3],"\n"; ... open my $out1, '>>', "$colnamesxp[1].txt" or die $!; open my $out2, '>>', "$colnamesxp[2].txt" or die $!; open my $out3, '>>', "$colnamesxp[3].txt" or die $!; ... foreach (@colvalues1){print $out1 "$_"}; foreach (@colvalues2){print $out2 "$_"}; foreach (@colvalues3){print $out3 "$_"};