1
#!/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");

A、C、G、Tの文字を含む1つの文字列を引数で受け取るこのコードがあります。

このスクリプトでの私の目的は、ユーザーがこれらの文字を上に書くことができる文字列を受け取り、同じ文字を置き換えてコンソールに出力することです。

  • A を T に置き換える
  • C を G に置き換える
  • G を C に置き換える
  • T を A に置き換える

ユーザーが他の文字を導入することを制限しているわけではありませんが、今のところ問題ありません...

一例:

ユーザー導入引数: ACAACAATGT

プログラムは次のように出力するはずです: TGTTGTTACA

私のスクリプトはそれを正しく行っています。

私の質問は、ハッシュリストでそれを行うことができますか? はいの場合、ハッシュが機能するスクリプトを見せてもらえますか? どうもありがとう :)

4

2 に答える 2

2

IMSoP の答えは正しいです。この場合、このtr仕事に最も適したツールです。

ただし、はい、ハッシュでも実行できます。

#!/usr/bin/env perl    

use strict;
use warnings;
use 5.010;

my $original = 'ACAACAATGT';
my $replaced;

my %flip = (
  A => 'T',
  C => 'G',
  G => 'C',
  T => 'A',
);

for (split '', $original) {
  $replaced .= $flip{$_};
} 

say $replaced;

出力:

TGTTGTTACA
于 2013-06-10T09:07:29.550 に答える