#! perl -w use strict; my $str = 'a' x 100000; my $char = 'a'; for my $n ( map{ $_ * 1000 + 165 } 1 .. 30 ) { pos($str)=0; $str =~ /(?:.*?$char){$n}/g; print "Pos of '$char' #$n in \$str is ", pos($str), "\n"; } __END__ C:\test>junk Pos of 'a' #1165 in $str is 1165 Pos of 'a' #2165 in $str is 2165 Pos of 'a' #3165 in $str is 3165 Pos of 'a' #4165 in $str is 4165 Pos of 'a' #5165 in $str is 5165 Pos of 'a' #6165 in $str is 6165 Pos of 'a' #7165 in $str is 7165 Pos of 'a' #8165 in $str is 8165 Pos of 'a' #9165 in $str is 9165 Pos of 'a' #10165 in $str is 10165 Pos of 'a' #11165 in $str is 11165 Pos of 'a' #12165 in $str is 12165 Pos of 'a' #13165 in $str is 13165 Pos of 'a' #14165 in $str is 14165 Pos of 'a' #15165 in $str is 15165 Pos of 'a' #16165 in $str is 16165 Pos of 'a' #17165 in $str is 17165 Pos of 'a' #18165 in $str is 18165 Pos of 'a' #19165 in $str is 19165 Pos of 'a' #20165 in $str is 20165 Pos of 'a' #21165 in $str is 21165