my @fasta_objs =(); ... push @fasta_objs,$seqFile1->seq; ... $fasta->write_seq($seqFile2) if (grep {$_ eq $seqFile2->seq} @fasta_objs); #### my %fasta_objs =(); ... ++$fasta_objs{$seqFile1->seq}; ... $fasta->write_seq($seqFile2) if exists $fasta_objs{$seqFile2->seq}; #### ++$fasta_objs{$seqFile1->seq}; #### $fasta_objs{$seqFile1->seq} = $header; #### seq => [header1, header2, ...] #### # Comment explaining why you're doing this no strict 'refs'; ... small piece of code here ... use strict 'refs';