perl中的子字符串比较

AWR*_*RAM 2 string perl loops pattern-matching match

我正在努力比较2个子串sub1sub22个初始字符串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)

*当我运行代码它被卡住直到我杀死进程并且它不会给出任何结果.对此有何帮助?*

Emi*_*lva 11

foreach (my $j=0;$j<length($seq2)-$k;$i++)
Run Code Online (Sandbox Code Playgroud)

应该

foreach (my $j=0;$j<length($seq2)-$k;$j++)
                                   # ^^
Run Code Online (Sandbox Code Playgroud)