When assigning the %amino_acid_conversion, you could use newlines to make the code a bit more readable
Completely agree. I'd go even further and put whitespace around the fat commas and with so many entries I would sort by either key or value to make it easier to spot misses/dupes/typos.
%amino_acid_conversion = (
ALA => 'A',
ARG => 'R',
ASN => 'N',
ASP => 'D',
CYS => 'C',
GLN => 'Q',
GLU => 'E',
GLY => 'G',
HIS => 'H',
ILE => 'I',
LEU => 'L',
LYS => 'K',
MET => 'M',
PHE => 'F',
PRO => 'P',
SER => 'S',
THR => 'T',
TRP => 'W',
TYR => 'Y',
VAL => 'V'
);