因此,我的问题是如何在perl中镜像基因序列?基本上,我有一段代码,如下所示:
m/(([ACGT]{4})\2)/这与连续四个字母中的任何一个匹配4次*2次...例如: CGAG CGAG (不带空格)。如何让这段代码打印出CGAG,后面跟着GAGC,而不是CGAG (第二个的镜像?任何帮助都将不胜感激。
发布于 2013-10-26 05:15:40
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.但这还只是一个实验性的特征...
你可以像这样做smth
my $str = "CGAGGAGC";
index($str, $1 . reverse($1)) != -1 && print "$1" . reverse($1) . " at " . (pos($str) - 4) while $str =~ m/([ACGT]{4})/g;发布于 2013-10-26 04:11:29
使用reverse和split:
$ perl -le 'print reverse split //, "GAGC"'
CGAG发布于 2013-10-26 07:34:19
如果我没记错的话,您想找一个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
#CGAGGAGChttps://stackoverflow.com/questions/19598396
复制相似问题