in reply to how extract values of hash via key

%reverse= reverse(%CodonMap)

This does not do what you think it does.

A hash key in Perl can only have one value. Use Data::Dumper to look at the result:

use Data::Dumper; %reverse= reverse(%CodonMap) print Dumper \%reverse;

You will need to construct your reverse map manually, for example by looping through all keys and values:

use Data::Dumper; my %reverse; while( my( $k,$v )= each %CodonMap) { $reverse{ $v }||= []; push @{ $reverse{ $v }}, $k; }; print Dumper \%reverse;

Then, you will need to adapt your program logic to cater for the fact that you don't have simple scalars in %reverse anymore.