while () { chomp; my $line = $_; my @chars = split ''; my $diff = join '', map {($chars[$_+1] - $chars[$_]) % 10} (0..$#chars-1); my $maxlen = 0; my $maxpos = 0; while ($diff =~ m/(1+|9+)/g) { if ($maxlen < length $1) { $maxlen = length $1; $maxpos = pos($diff) - $maxlen; } } printf "pos = % 2s, str = '%s'\n", $maxpos, substr($line, $maxpos, $maxlen + 1); }