my $s1 = 'AAGGTTCCTTAAGGAA';; my $s2 = 'AAGGTTCCGGGGGGGGGG';; for my $start ( 0 .. length( $s1 ) - 5 ) { for $len ( reverse 5 .. length( $s1 ) - $start ) { my $n = substr $s1, $start, $len; my $p2 = 1+index $s2, $n; printf "s1:%d s2:%d '%s'\n", $start, $p2-1, $n if $p2; } };; s1:0 s2:0 'AAGGTTCC' s1:0 s2:0 'AAGGTTC' s1:0 s2:0 'AAGGTT' s1:0 s2:0 'AAGGT' s1:1 s2:1 'AGGTTCC' s1:1 s2:1 'AGGTTC' s1:1 s2:1 'AGGTT' s1:2 s2:2 'GGTTCC' s1:2 s2:2 'GGTTC' s1:3 s2:3 'GTTCC'