while (){ chomp; my $line = $_; my $headerHash; ... if ($line =~ /^>/){ my $header = $line; if ($header =~ /(>gi.*)\[(.+)\](>gi.*)\[(.+)\]/){ $headerHash{$1} = $2; } else{ my $seq = $line; print OUTFILE $headerHash, "\n", $seq, "\n"; } } }