2011-11-20 89 views
0

的数量如何找到number of of each 2 consecutive characters AA, AC,AG,AT,CC,CA...在这样的顺序:字符串在Perl匹配,找到匹配

$sequence = 'AACGTACTGACGTACTGGTTGGTACGA' 

重叠是不允许即$顺序从左至右AA CG TA CT包含.. ..和不AA AC CG ......

回答

5
@result = $subject =~ m/[ACTG][ATGC]/g; 

print scalar(@result); 

编辑,因为你完全改变了你的问题:

use strict; 

my $subject = "AACGTACTGACGTACTGGTTGGTACGA"; 
my %results =(); 
while ($subject =~ m/[ACTG][ATGC]/g) { 
    # matched text = $& 
     if(exists $results{$&}) 
     { 
      $results{$&}++ 
     } 
     else 
     { 
      $results{$&} = 1; 
     } 
} 

foreach (sort keys %results) { 
    print "$_ : $results{$_}\n"; 
    } 

输出:

AA : 1 
CG : 3 
CT : 2 
GA : 1 
GG : 2 
TA : 3 
TT : 1 

最后编辑:希望...感谢@canavanin

use strict; 

my $subject = "AACGTACTGACGTACTGGTTGGTACGA"; 
my %results =(); 
while ($subject =~ m/[ACTG][ATGC]/g) { 
    # matched text = $& 
    $results{$&}++ 
} 

foreach (sort keys %results) { 
    print "$_ : $results{$_}\n"; 
    } 
+0

我想了''...在这个问题意味着其他序列。 – Matteo

+0

yes AA AT AG AC CC CG CT CA TA TC TG TT GA GC GT GG – AWRAM

+0

@Matteo我想,OP应该以某种方式扩展它,或给出他想要匹配什么的另一种描述。 – FailedDev