while(){ chomp; $scGeneids{$_} = ""; } ... while (){ chomp; my @columns=split /\t/; my $gene_id=$columns[0]; my $SNP_pos=$columns[2]; if ( exists $scGeneids{$gene_id} ){ $scGeneids{$gene_id} .= "$gene_id\t$SNP_pos\n"; # collect by ID } } for my $key (sort keys %scGeneids) { print OUT $scGeneids{$key}; }