$ 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