Perl中的HashLists

And*_*das 1 perl hash replace list

#!/usr/bin/perl -w
use strict;

my $string = $ARGV[0];

my @caracteresSeparados = split(//,$string);

my $temp;
my @complementoADN;

foreach my $i(@caracteresSeparados){

    if($i eq 'a'){
        $temp = 't';
        push(@complementoADN,$temp);
    }elsif($i eq 'c'){
       $temp = 'g';
       push(@complementoADN,$temp);
    }elsif($i eq 'g'){
       $temp = 'c';
       push(@complementoADN,$temp);
    }elsif($i eq 't'){
       $temp = 'a';
       push(@complementoADN,$temp);
    }
}

printf("@complementoADN\n");
Run Code Online (Sandbox Code Playgroud)

我有这个代码,通过参数接收一个带有A,C,G,T字母的字符串.

我对这个脚本的目标是接收用户可以在上面写这些字母的字符串,然后应该在控制台中打印相同的字母替换,我的意思是

  • 替换为T
  • C代替G
  • G由C代替
  • T代替A

我不是限制用户介绍其他字母,但现在没问题...

一个例子:

用户介绍参数:ACAACAATGT

程序应打印:TGTTGTTACA

我的脚本做得很对.

我的问题是,我可以使用哈希列表吗?如果是,你可以告诉我Hashes工作的脚本吗?非常感谢 :)

IMS*_*SoP 6

它不涉及哈希值,但如果你希望简化程序,查找tr//("音译")运营.我相信以下内容与您的相同:

#!/usr/bin/perl -w
use strict;

my $string = $ARGV[0];

my $complementoADN = $string;
$complementoADN =~ tr/ACGT/TGCA/;

print $complementoADN, "\n";
Run Code Online (Sandbox Code Playgroud)

  • @AndréBarradas[`tr //`运算符](http://perldoc.perl.org/perlop.html#tr/SEARCHLIST/REPLACEMENTLIST/cdsr)执行"音译" - 它将第一个参数中的每个字符替换为相应的第二个参数中的字符.请参阅[本实时演示](http://codepad.org/XCD3vMlW),输入硬编码到您问题中的示例. (2认同)