in reply to fasta file

You could also wrote this

if(/^>/) {

instead this:

if($_ =~ />/) {

That's a little more precise for your case probably

personally I prefer this more compact form also, but this is a matter of style only

if(/^>/) {$seq = $_} else {$accession{$seq} .= $_}
if you want in any case to write the same like this, I suggest that you consider indent your code
if($_ =~ />/) { $seq = $_; } else { $accession{$seq} .= $_; }

AND last but not least, don't try to reinvent the wheel, I strongly suggest you to take a look to the bioperl modules, specially the modules related with managing fasta files