use strict; use warnings; my ($s1, $s2, $l, $i, $c1, $c2, @m); $s1 = 'ATACCGGC'; $s1 .= 'ATTTT'x1000000; $s2 = 'ATTCCGGG'; $s2 .= 'ATTTT'x1000000; for $i (0..(length($s1)-1)) { $c1 = substr($s1, $i, 1); $c2 = substr($s2, $i, 1); push @m, [$i, $c1, $c2] if $c1 ne $c2; } print (($#m+1) . ' mismatches with target at position(s) ' . join(', ', map { $_->[0] } @m) . ' (' . join(', ', map { $_->[2].'->'.$_->[1] } @m) . ')');