我正在努力比较2个子串sub1和sub22个初始字符串seq1,seq2只允许一个不匹配的$k是子序列的长度
foreach (my $i = 0; $i < length($seq1) - $k; $i += 1) {
my $sub1 = substr($seq1, $i, $k);
foreach (my $j = 0; $j < length($seq2) - $k; $i++) {
my $sub2 = substr($seq2, $j, $k);
my $diff = $sub1 ^ $sub2;
my $num_mismatch = $diff =~ tr/\0//c;
if ($num_mismatch == 1) {
$d{$sub1}++;
}
}
}
foreach (keys %d) {
print "$_\n";
}
Run Code Online (Sandbox Code Playgroud)
*当我运行代码它被卡住直到我杀死进程并且它不会给出任何结果.对此有何帮助?*
我有一个哈希包含匹配子串的结果.如果字符串之间没有匹配,我想打印一条消息.我尝试过以下内容并没有奏效.
foreach (keys %d) {
if ($_ eq "") {
print "no matches"; # and i've tried (if defined $_
} else {
print "$_\n";
}
}
Run Code Online (Sandbox Code Playgroud)
%d以这种方式填充(它包含匹配的子字符串):
foreach (my $i=0;$i<length($seq1)-$k;$i+=1) {
my $common=substr($seq1,$i,$k);
if ($seq2=~/$common/) {
$d{$common}++;
}
}
Run Code Online (Sandbox Code Playgroud) 如何number of of each 2 consecutive characters AA, AC,AG,AT,CC,CA...在这样的序列中找到:
$sequence = 'AACGTACTGACGTACTGGTTGGTACGA'
Run Code Online (Sandbox Code Playgroud)
不允许重叠,即$序列包含从左到右AA CG TA CT ....而不是AA AC CG ......