Looks to me like you could pack the data quite a bit. The tags seem to contain just four letters (ACTG) ... which means you need just two bits per letter, that's 34*2=68 bits per tag which fits into 9 bytes instead of the original 34. Not sure what's allowed in the Error_rate_In_ASCII, but it looks there's quite a bit less than 256 possible characters in each position. So you could pack these as well.
This way you can save quite a lot of space and the comparison of the packed strings will also be quicker. Assuming the number of Error_rates for each Tag is not too big, it might also be better to use
$data{$packed_tag} .= $packed_rate . "\n";
instead of
push @{$data{$packed_tag}}, $packed_rate;
which will also let you use DB_File or some other on disk hash without the overhead of the multilevel ones like DBM::Deep.