所以我的问题是你如何在perl中镜像基因序列?基本上我有一段看起来像这样的代码:
m/(([ACGT]{4})\2)/
这匹配连续四个字母中的任何一个4次* 2 ...所以例如:CGAG CGAG(没有空格)。如何让这个代码打印出CGAG,然后是GAGC而不是CGAG(第二个镜像?任何帮助都会受到赞赏。
答案 0 :(得分:1)
pff,true-regexp方式是:
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;
答案 1 :(得分:0)
使用reverse
& split
:
$ perl -le 'print reverse split //, "GAGC"'
CGAG
答案 2 :(得分:0)
如果我没弄错,你想找到palindromic secuence.。
在你的情况下,你可以做这样的事情。
#!/usr/bin/perl
use warnings;
use strict;
use 5.014;
my $dna = "TGCACGAGGAGCTTAC";
my ($match) = $dna =~ m/(([ACGT])([ACGT])([ACGT])([ACGT])\5\4\3\2)/;
say $match
#CGAGGAGC