我有一个数组和一个哈希:

@arraycodons = "AATG", "AAAA", "TTGC"... etc.
%hashdictionary = ("AATG" => "A", "AAAA" => "B"... etc.)


我需要将数组的每个元素转换为哈希字典中的对应值。但是,我得到了错误的翻译。

要查看该问题,我已经打印了$ codon(数组的每个元素),但是每个密码子都重复了几次.....并且不应该这样。

sub translation() {
    foreach $codon (@arraycodons) {
        foreach $k (keys %hashdictionary) {
            if ($codon == $k) {
                $v = $hashdictionary{$k};
                print $codon;
            }
        }
    }
}


我不知道我是否已经很好地解释了我的问题,但是如果这样做不起作用,我将无法继续我的代码...

提前谢谢了。

最佳答案

my @words = ("car", "house", "world");
my %dictionary = ("car" => "el coche", "house" => "la casa", "world" => "el mundo");
my @keys = keys %dictionary;


foreach(@words) {
my $word = $_;
foreach(@keys) {
    if($_ eq $word) { # eq, not ==
        my $translation = $dictionary{$_};
        print "The Spanish translation of $word is $translation\n";
    }

}
}

10-08 19:40