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