diff options
author | Yves Orton <demerphq@gmail.com> | 2006-10-30 21:15:13 +0200 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2006-10-30 17:56:33 +0000 |
commit | 1a147d384ccafb1ee40180084a4533d35538bfd1 (patch) | |
tree | 71ee7f67a4a823191f0d707aa929687d6e5cc5b5 /pod/perldiag.pod | |
parent | 40d049e43280582bb162c511cc362c246f19862a (diff) | |
download | perl-1a147d384ccafb1ee40180084a4533d35538bfd1.tar.gz |
The second patch from:
Subject: [PATCH] regex engine optimiser should grok subroutine patterns, and, name subroutine regops more intuitively
Message-ID: <9b18b3110610300915x3abf6cddu9c2071a70bea48e1@mail.gmail.com>
p4raw-id: //depot/perl@29162
Diffstat (limited to 'pod/perldiag.pod')
-rw-r--r-- | pod/perldiag.pod | 67 |
1 files changed, 56 insertions, 11 deletions
diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 68df69f1bf..f785603bfe 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -1231,7 +1231,7 @@ instead. unpack("H", "\x{2a1}") -where the format expects to process a byte (a character with a value +where the format expects to process a byte (a character with a value below 256), but a higher value was provided instead. Perl uses the value modulus 256 instead, as if you had provided: @@ -1243,8 +1243,8 @@ modulus 256 instead, as if you had provided: pack("u", "\x{1f3}b") -where the format expects to process a sequence of bytes (character with a -value below 256), but some of the characters had a higher value. Perl +where the format expects to process a sequence of bytes (character with a +value below 256), but some of the characters had a higher value. Perl uses the character values modulus 256 instead, as if you had provided: pack("u", "\x{f3}b") @@ -1255,8 +1255,8 @@ uses the character values modulus 256 instead, as if you had provided: unpack("s", "\x{1f3}b") -where the format expects to process a sequence of bytes (character with a -value below 256), but some of the characters had a higher value. Perl +where the format expects to process a sequence of bytes (character with a +value below 256), but some of the characters had a higher value. Perl uses the character values modulus 256 instead, as if you had provided: unpack("s", "\x{f3}b") @@ -1336,9 +1336,9 @@ L<overload>. =item Constant(%s)%s: %s in regex; marked by <-- HERE in m/%s/ -(F) The parser found inconsistencies while attempting to find -the character name specified in the C<\N{...}> escape. Perhaps you -forgot to load the corresponding C<charnames> pragma? +(F) The parser found inconsistencies while attempting to find +the character name specified in the C<\N{...}> escape. Perhaps you +forgot to load the corresponding C<charnames> pragma? See L<charnames>. @@ -1586,6 +1586,14 @@ that in an eval(). See L<perlre/(?{ code })>. assertion, but that construct is only allowed when the C<use re 'eval'> pragma is in effect. See L<perlre/(?{ code })>. +=item EVAL without pos change exceeded limit in regex; marked by <-- HERE in m/%s/ + +(F) You used a pattern that nested too many EVAL calls without consuming +any text. Restructure the pattern so that text is consumed. + +The <-- HERE shows in the regular expression about where the problem was +discovered. + =item Excessively long <> operator (F) The contents of a <> operator may not exceed the maximum size of a @@ -1853,7 +1861,7 @@ of Perl are likely to eliminate these arbitrary limitations. (W) Named unicode character escapes (\N{...}) may return multi-char or zero length sequences. When such an escape is used in a character class -its behaviour is not well defined. Check that the correct escape has +its behaviour is not well defined. Check that the correct escape has been used, and the correct charname handler is in scope. =item Illegal binary digit %s @@ -1959,6 +1967,15 @@ also result in this warning. See L<perlcall/G_KEEPERR>. Unicode code points, and encoded in EBCDIC as UTF-EBCDIC. The UTF-EBCDIC encoding is limited to code points no larger than 2147483647 (0x7FFFFFFF). +=item Infinite recursion in regex; marked by <-- HERE in m/%s/ + +(F) You used a pattern that references itself without consuming any input +text. You should check the pattern to ensure that recursive patterns +either consume text or fail. + +The <-- HERE shows in the regular expression about where the problem was +discovered. + =item Insecure dependency in %s (F) You tried to do something that the tainting mechanism didn't like. @@ -3091,6 +3108,15 @@ to even) byte length. (P) The lexer got into a bad state while processing a case modifier. +=item Pattern subroutine nesting without pos change exceeded limit in regex; marked by <-- HERE in m/%s/ + +(F) You used a pattern that uses too many nested subpattern calls without +consuming any text. Restructure the pattern so text is consumed before the +nesting limit is exceeded. + +The <-- HERE shows in the regular expression about where the problem was +discovered. + =item Parentheses missing around "%s" list (W parenthesis) You said something like @@ -3386,7 +3412,7 @@ by prepending "0" to your numbers. =item readdir() attempted on invalid dirhandle %s -(W io) The dirhandle you're reading from is either closed or not really +(W io) The dirhandle you're reading from is either closed or not really a dirhandle. Check your control flow. =item readline() on closed filehandle %s @@ -3460,6 +3486,25 @@ prepend a zero to make the number at least two digits: C<\07> The <-- HERE shows in the regular expression about where the problem was discovered. +=item Reference to nonexistent named group in regex; marked by <-- HERE in m/%s/ + +(F) You used something like C<\k'NAME'> or C<< \k<NAME> >> in your regular +expression, but there is no corresponding named capturing parentheses such +as C<(?'NAME'...)> or C<(?<NAME>...). Check if the name has been spelled +correctly both in the backreference and the declaration. + +The <-- HERE shows in the regular expression about where the problem was +discovered. + +=item (?(DEFINE)....) does not allow branches in regex; marked by <-- HERE in m/%s/ + +(F) You used something like C<(?(DEFINE)...|..)> which is illegal. The +most likely cause of this error is that you left out a parenthesis inside +of the C<....> part. + +The <-- HERE shows in the regular expression about where the problem was +discovered. + =item regexp memory corruption (P) The regular expression engine got confused by what the regular @@ -4024,7 +4069,7 @@ See L<perlunicode/"User-Defined Character Properties">. =item Too deeply nested ()-groups -(F) Your template contains ()-groups with a ridiculously deep nesting level. +(F) Your template contains ()-groups with a ridiculously deep nesting level. =item Too few args to syscall |