$ perl -MData::Dump -Mre=debug -le " dd( $_=qq{a\n\nb} ); s{^$}{boop}m
+; dd( $_ ); "
Compiling REx "^$"
Final program:
1: MBOL (2)
2: MEOL (3)
3: END (0)
anchored ""$ at 0 anchored(MBOL) minlen 0
"a\n\nb"
Matching REx "^$" against "a%n%nb"
0 <> <a%n%nb> | 1:MBOL(2)
0 <> <a%n%nb> | 2:MEOL(3)
failed...
2 <a%n> <%nb> | 1:MBOL(2)
2 <a%n> <%nb> | 2:MEOL(3)
2 <a%n> <%nb> | 3:END(0)
Match successful!
"a\nboop\nb"
Freeing REx: "^$"
Trying to match newline after end of line won't work, $\n won't work $ perl -MData::Dump -Mre=debug -le " dd( $_=qq{a\n\nb} ); s{^$\n}{boop
+}m; dd( $_ ); "
"a\n\nb"
Compiling REx "^%nn"
Final program:
1: MBOL (2)
2: EXACT <\nn> (4)
4: END (0)
anchored "%nn" at 0 (checking anchored) anchored(MBOL) minlen 2
Guessing start of match in sv for REx "^%nn" against "a%n%nb"
Did not find anchored substr "%nn"...
Match rejected by optimizer
"a\n\nb"
Freeing REx: "^%nn"
But matching an OPTIONAl newline works $ perl -MData::Dump -Mre=debug -le " dd( $_=qq{a\n\nb} ); s{^$\n?}{boo
+p}ms; dd( $_ ); "
"a\n\nb"
Compiling REx "^%nn?"
Final program:
1: MBOL (2)
2: EXACT <\n> (4)
4: CURLY {0,1} (8)
6: EXACT <n> (0)
8: END (0)
anchored "%n" at 0 (checking anchored) anchored(MBOL) minlen 1
Guessing start of match in sv for REx "^%nn?" against "a%n%nb"
Found anchored substr "%n" at offset 1...
Found /^/m, restarting lookup for check-string at offset 2...
Found anchored substr "%n" at offset 2...
Position at offset 2 does not contradict /^/m...
Guessed: match at offset 2
Matching REx "^%nn?" against "%nb"
2 <a%n> <%nb> | 1:MBOL(2)
2 <a%n> <%nb> | 2:EXACT <\n>(4)
3 <a%n%n> <b> | 4:CURLY {0,1}(8)
EXACT <n> can match 0 times out of 1
+...
3 <a%n%n> <b> | 8: END(0)
Match successful!
"a\nboopb"
Freeing REx: "^%nn?"
|