私の質問は、perl で遺伝子配列をどのようにミラーリングするのですか? 基本的に、次のようなコードがあります。
m/(([ACGT]{4})\2)/
これは、連続する 4 文字のいずれかに 4 回一致します *2... 例: CGAG CGAG (スペースなし)。このコードを取得して、CGAG の代わりに GAGC を出力するにはどうすればよいでしょうか (2 番目のコードのミラー)。
pff、真の正規表現の方法は次のとおりです。
m/(([ACGT]{4})\s*(??{ my $b = reverse $2; $b }))/
perl -E 'warn "CGAG GAGC" =~ m/(([ACGT]{4})\s*(??{ my $b = reverse $2; $b }))/'
CGAG GAGCCGAG at -e line 1.
しかし、それはまだ実験的な機能です...
あなたは次のようにすることができます
my $str = "CGAGGAGC";
index($str, $1 . reverse($1)) != -1 && print "$1" . reverse($1) . " at " . (pos($str) - 4) while $str =~ m/([ACGT]{4})/g;
reverse
&の使用split
:
$ perl -le 'print reverse split //, "GAGC"'
CGAG