in reply to When would I want to use possessive quantifiers?

Without knowing the internals of the regex engine,

'aaaaaaaaaaaaaaa' =~ /^a+b/

would try

  1. 'aaaaaaaaaaaaaaa' followed by 'b'?
  2. 'aaaaaaaaaaaaaa' followed by 'b'?
  3. 'aaaaaaaaaaaaa' followed by 'b'?
  4. 'aaaaaaaaaaaa' followed by 'b'?
  5. ...
  6. 'a' followed by 'b'?
  7. FAIL

You could prevent that by using

'aaaaaaaaaaaaaaa' =~ /^a++b/
  1. 'aaaaaaaaaaaaaaa' followed by 'b'?
  2. FAIL

That said, /^a+b/ is already highly optimised. (The regex engine searches for "ab" and fails if it doesn't exist.) But replace "a" and "b" with more complex patterns and it's up to you to provide the optimisation using the possessive modifier.

Compare

$ perl -Mre=debug -e'"aaaaaaaaaaaaaaa" =~ /^a+[bB]/' ... Matching REx "^a+[bB]" against "aaaaaaaaaaaaaaa" 0 <> <aaaaaaaaaa> | 1:BOL(2) 0 <> <aaaaaaaaaa> | 2:PLUS(5) EXACT <a> can match 15 times out of +2147483647... 15 <aaaaaaaaaaaa> <> | 5: ANYOF[Bb][](16) failed... 14 <aaaaaaaaaaa> <a> | 5: ANYOF[Bb][](16) failed... 13 <aaaaaaaaaa> <aa> | 5: ANYOF[Bb][](16) failed... 12 <aaaaaaaaa> <aaa> | 5: ANYOF[Bb][](16) failed... 11 <aaaaaaaa> <aaaa> | 5: ANYOF[Bb][](16) failed... 10 <aaaaaaa> <aaaaa> | 5: ANYOF[Bb][](16) failed... 9 <aaaaaa> <aaaaaa> | 5: ANYOF[Bb][](16) failed... 8 <aaaaa> <aaaaaaa> | 5: ANYOF[Bb][](16) failed... 7 <aaaaa> <aaaaaaaa> | 5: ANYOF[Bb][](16) failed... 6 <aaaaa> <aaaaaaaaa> | 5: ANYOF[Bb][](16) failed... 5 <aaaaa> <aaaaaaaaaa> | 5: ANYOF[Bb][](16) failed... 4 <aaaa> <aaaaaaaaaa> | 5: ANYOF[Bb][](16) failed... 3 <aaa> <aaaaaaaaaa> | 5: ANYOF[Bb][](16) failed... 2 <aa> <aaaaaaaaaa> | 5: ANYOF[Bb][](16) failed... 1 <a> <aaaaaaaaaa> | 5: ANYOF[Bb][](16) failed... failed... Match failed ... $ perl -Mre=debug -e'"aaaaaaaaaaaaaaa" =~ /^a++[bB]/' ... Matching REx "^a++[bB]" against "aaaaaaaaaaaaaaa" 0 <> <aaaaaaaaaa> | 1:BOL(2) 0 <> <aaaaaaaaaa> | 2:SUSPEND(9) 0 <> <aaaaaaaaaa> | 4: PLUS(7) EXACT <a> can match 15 times out o +f 2147483647... 15 <aaaaaaaaaaaa> <> | 7: SUCCEED(0) subpattern success... 15 <aaaaaaaaaaaa> <> | 9:ANYOF[Bb][](20) failed... Match failed ...