$ perl -Mre=debug -le " q/a a/ =~ /(.\b)\1/ " Compiling REx "(.\b)\1" Final program: 1: OPEN1 (3) 3: REG_ANY (4) 4: BOUND (5) 5: CLOSE1 (7) 7: REF1 (9) 9: END (0) minlen 1 Matching REx "(.\b)\1" against "a a" 0 <> | 1:OPEN1(3) 0 <> | 3:REG_ANY(4) 1 < a> | 4:BOUND(5) 1 < a> | 5:CLOSE1(7) 1 < a> | 7:REF1(9) failed... 1 < a> | 1:OPEN1(3) 1 < a> | 3:REG_ANY(4) 2 | 4:BOUND(5) 2 | 5:CLOSE1(7) 2 | 7:REF1(9) failed... 2 | 1:OPEN1(3) 2 | 3:REG_ANY(4) 3 <> | 4:BOUND(5) 3 <> | 5:CLOSE1(7) 3 <> | 7:REF1(9) failed... 3 <> | 1:OPEN1(3) 3 <> | 3:REG_ANY(4) failed... Match failed Freeing REx: "(.\b)\1" #### $ perl -Mre=debug -le " q/aa/ =~ /a\b/ " Compiling REx "a\b" Final program: 1: EXACT (3) 3: BOUND (4) 4: END (0) anchored "a" at 0 (checking anchored) minlen 1 Guessing start of match in sv for REx "a\b" against "aa" Found anchored substr "a" at offset 0... Guessed: match at offset 0 Matching REx "a\b" against "aa" 0 <> | 1:EXACT (3) 1 | 3:BOUND(4) failed... 1 | 1:EXACT (3) 2 <> | 3:BOUND(4) 2 <> | 4:END(0) Match successful! Freeing REx: "a\b" #### $x = "Housecat catenates house and cat"; $x =~ /\bcat/; # matches cat in 'catenates' $x =~ /cat\b/; # matches cat in 'housecat' $x =~ /\bcat\b/; # matches 'cat' at end of string