This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
PATCH: [perl #99928] Document that is not a bug
authorKarl Williamson <public@khwilliamson.com>
Thu, 27 Oct 2011 16:18:34 +0000 (10:18 -0600)
committerKarl Williamson <public@khwilliamson.com>
Thu, 27 Oct 2011 16:56:06 +0000 (10:56 -0600)
After consulting with Tom Christiansen, we decided that this is not a
bug.  The CR-LF sequence is considered a unit by Unicode, and so should
be inseperable, even when separating the two would cause a pattern to
match that otherwise fails.

pod/perlrebackslash.pod
t/re/re_tests

index 0ce42b4..1a64849 100644 (file)
@@ -603,7 +603,14 @@ linebreak sequence by Unicode. This includes all characters matched by
 C<\v> (vertical whitespace), and the multi character sequence C<"\x0D\x0A">
 (carriage return followed by a line feed, sometimes called the network
 newline; it's the end of line sequence used in Microsoft text files opened
-in binary mode). C<\R> is equivalent to C<< (?>\x0D\x0A|\v) >>. Since
+in binary mode). C<\R> is equivalent to C<< (?>\x0D\x0A|\v) >>.  (The
+reason it doesn't backtrack is because the sequence is considered
+inseperable.  That means that
+
+ "\x0D\x0A" =~ /^\R\x0A$/   # No match
+
+fails, because the C<\R> matches the entire string, and won't backtrack
+to match just the C<"\x0D">.)  Since
 C<\R> can match a sequence of more than one character, it cannot be put
 inside a bracketed character class; C</[\R]/> is an error; use C<\v>
 instead.  C<\R> was introduced in perl 5.10.0.
index e89e0ac..1f8c80a 100644 (file)
@@ -1539,7 +1539,7 @@ abc\N{def -       c       -       \\N{NAME} must be resolved by the lexer
 /s\xDF/ui      \xDFs   yT      $&      \xDFs
 
 # RT #99928
-/^\R\x0A$/     \x0D\x0A        yT      $&      \x0D\x0A
+/^\R\x0A$/     \x0D\x0A        n       -       -
 
 /ff/i  \x{FB00}\x{FB01}        y       $&      \x{FB00}
 /ff/i  \x{FB01}\x{FB00}        y       $&      \x{FB00}