X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperldiag.pod;h=4651661e51a18bc9b6a21679f66fdc218218d887;hb=e40b81a3dd247b1a29fc78399677b77b78b5f183;hp=5bc120b8718fd760937f2a9afe365ef81171e25e;hpb=cd299c6e57209410a1331dd3e21dad7fec4cce55;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 5bc120b..4651661 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -361,6 +361,12 @@ by setting environment variable C to 1. (P) An internal request asked to add an array entry to something that wasn't a symbol table entry. +=item Bad symbol for dirhandle + +(P) An internal request asked to add a dirhandle entry to something +that wasn't a symbol table entry. + + =item Bad symbol for filehandle (P) An internal request asked to add a filehandle entry to something @@ -480,6 +486,18 @@ See L. (F) An argument to pack("w",...) was negative. The BER compressed integer format can only be used with positive integers. See L. +=item Cannot convert a reference to %s to typeglob + +(F) You manipulated Perl's symbol table directly, stored a reference in it, +then tried to access that symbol via conventional Perl syntax. The access +triggers Perl to autovivify that typeglob, but it there is no legal conversion +from that type of reference to a typeglob. + +=item Cannot copy to %s in %s + +(P) Perl detected an attempt to copy a value to an internal type that cannot +be directly assigned not. + =item Can only compress unsigned integers in pack (F) An argument to pack("w",...) was not an integer. The BER compressed @@ -491,6 +509,15 @@ to compress something else. See L. (F) Only hard references may be blessed. This is how Perl "enforces" encapsulation of objects. See L. +=item Can't "break" in a loop topicalizer + +(F) You called C, but you're in a C block rather than +a C block. You probably meant to use C or C. + +=item Can't "break" outside a given block + +(F) You called C, but you're not inside a C block. + =item Can't call method "%s" in empty package "%s" (F) You called a method correctly, and it correctly indicated a package @@ -566,6 +593,11 @@ but then $foo no longer contains a glob. (F) Certain types of SVs, in particular real symbol table entries (typeglobs), can't be forced to stop being what they are. +=item Can't "continue" outside a when block + +(F) You called C, but you're not inside a C +or C block. + =item Can't create pipe mailbox (P) An error peculiar to VMS. The process is suffering from exhausted @@ -695,15 +727,6 @@ found in the PATH. found in the PATH, or at least not with the correct permissions. The script exists in the current directory, but PATH prohibits running it. -=item Can't find %s property definition %s - -(F) You may have tried to use C<\p> which means a Unicode property (for -example C<\p{Lu}> is all uppercase letters). If you did mean to use a -Unicode property, see L for the list of known properties. -If you didn't mean to use a Unicode property, escape the C<\p>, either -by C<\\p> (just the C<\p>) or by C<\Q\p> (the rest of the string, until -possible C<\E>). - =item Can't find string terminator %s anywhere before EOF (F) Perl strings can stretch over multiple lines. This message means @@ -716,6 +739,15 @@ If you're getting this error from a here-document, you may have included unseen whitespace before or after your closing tag. A good programmer's editor will have a way to help you find these characters. +=item Can't find Unicode property definition "%s" + +(F) You may have tried to use C<\p> which means a Unicode property (for +example C<\p{Lu}> is all uppercase letters). If you did mean to use a +Unicode property, see L for the list of known properties. +If you didn't mean to use a Unicode property, escape the C<\p>, either +by C<\\p> (just the C<\p>) or by C<\Q\p> (the rest of the string, until +possible C<\E>). + =item Can't fork (F) A fatal error occurred while trying to fork while opening a @@ -1049,19 +1081,13 @@ redefined subroutine while the old routine is running. Go figure. (F) You tried to unshift an "unreal" array that can't be unshifted, such as the main Perl stack. -=item Can't upgrade that kind of scalar +=item Can't upgrade %s (%d) to %d (P) The internal sv_upgrade routine adds "members" to an SV, making it into a more specialized kind of SV. The top several SV types are so specialized, however, that they cannot be interconverted. This message indicates that such a conversion was attempted. -=item Can't upgrade to undef - -(P) The undefined SV is the bottom of the totem pole, in the scheme of -upgradability. Upgrading to undef indicates an error in the code -calling sv_upgrade. - =item Can't use anonymous symbol table for method lookup (F) The internal routine that does method lookup was handed a symbol @@ -1133,7 +1159,7 @@ references are disallowed. See L. (F) The compiler tried to interpret a bracketed expression as a subscript. But to the left of the brackets was an expression that -didn't look like an array reference, or anything else subscriptable. +didn't look like a hash or array reference, or anything else subscriptable. =item Can't use \%c to mean $%c in expression @@ -1144,6 +1170,13 @@ expression pattern. Trying to do this in ordinary Perl code produces a value that prints out looking like SCALAR(0xdecaf). Use the $1 form instead. +=item Can't use "when" outside a topicalizer + +(F) You have used a when() block that is neither inside a C +loop nor a C block. (Note that this error is issued on exit +from the C block, so you won't get the error if the match fails, +or if you use an explicit C.) + =item Can't weaken a nonreference (F) You attempted to weaken something that was not a reference. Only @@ -1203,7 +1236,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: @@ -1215,8 +1248,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") @@ -1227,8 +1260,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") @@ -1237,6 +1270,11 @@ uses the character values modulus 256 instead, as if you had provided: (W unopened) You tried to close a filehandle that was never opened. +=item closedir() attempted on invalid dirhandle %s + +(W io) The dirhandle you tried to close is either closed or not really +a dirhandle. Check your control flow. + =item Code missing after '/' (F) You had a (sub-)template that ends with a '/'. There must be another @@ -1301,6 +1339,14 @@ specified in the C<\N{...}> escape. Perhaps you forgot to load the corresponding C or C pragma? See L and L. +=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 pragma? +See L. + + =item Constant is not %s reference (F) A constant value (perhaps declared using the C pragma) @@ -1389,13 +1435,18 @@ conditional. Some people have exploited this bug to achieve a kind of static variable. Since we intend to fix this bug, we don't want people relying on this behavior. You can achieve a similar static effect by declaring the variable in a separate block outside the function, eg - + sub f { my $x if 0; return $x++ } becomes { my $x; sub f { return $x++ } } +Beginning with perl 5.9.4, you can also use C variables to +have lexicals that are initialized only once (see L): + + sub f { state $x; return $x++ } + =item DESTROY created new reference to dead object '%s' (F) A DESTROY() method created a new reference to the object which is @@ -1473,6 +1524,10 @@ subroutine or package before the current location. You can use an empty (W misc) You used the obsolescent C built-in function, without fully qualifying it as C. Maybe it's a typo. See L. +=item dump is not supported + +(F) Your machine doesn't support dump/undump. + =item Duplicate free() ignored (S malloc) An internal routine called free() on something that had @@ -1536,6 +1591,14 @@ that in an eval(). See L. assertion, but that construct is only allowed when the C pragma is in effect. See L. +=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 @@ -1591,9 +1654,9 @@ Check the #! line, or manually feed your script into Perl yourself. =item %s failed--call queue aborted -(F) An untrapped exception was raised while executing a CHECK, INIT, or -END subroutine. Processing of the remainder of the queue of such -routines has been prematurely ended. +(F) An untrapped exception was raised while executing a UNITCHECK, +CHECK, INIT, or END subroutine. Processing of the remainder of the +queue of such routines has been prematurely ended. =item False [] range "%s" in regex; marked by <-- HERE in m/%s/ @@ -1799,6 +1862,13 @@ about 250 characters for simple names, and somewhat more for compound names (like C<$A::B>). You've exceeded Perl's limits. Future versions of Perl are likely to eliminate these arbitrary limitations. +=item Ignoring %s in character class in regex; marked by <-- HERE in m/%s/ + +(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 +been used, and the correct charname handler is in scope. + =item Illegal binary digit %s (F) You used a digit other than 0 or 1 in a binary number. @@ -1902,6 +1972,15 @@ also result in this warning. See L. 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. @@ -1939,6 +2018,12 @@ transparently promotes all numbers to a floating point representation internally--subject to loss of precision errors in subsequent operations. +=item Integer overflow in format string for %s + +(F) The indexes and widths specified in the format string of C +or C are too large. The numbers must not overflow the size of +integers for your architecture. + =item Integer overflow in version (F) Some portion of a version initialization is too large for the @@ -1991,6 +2076,15 @@ recognized by Perl or by a user-supplied handler. See L. (W printf) Perl does not understand the given format conversion. See L. +=item Invalid escape in the specified encoding in regex; marked by <-- HERE in m/%s/ + +(W regexp) The numeric escape (for example C<\xHH>) of value < 256 +didn't correspond to a single character through the conversion +from the encoding specified by the encoding pragma. +The escape was replaced with REPLACEMENT CHARACTER (U+FFFD) instead. +The <-- HERE shows in the regular expression about where the +escape was discovered. + =item Invalid [] range "%s" in regex; marked by <-- HERE in m/%s/ (F) The range specified in a character class had a minimum character @@ -2119,11 +2213,10 @@ an undefined value for the length. See L. to check the return value of your socket() call? See L. -=item Lookbehind longer than %d not implemented in regex; marked by <-- HERE in m/%s/ +=item Lookbehind longer than %d not implemented in regex m/%s/ (F) There is currently a limit on the length of string which lookbehind can -handle. This restriction may be eased in a future release. The <-- HERE -shows in the regular expression about where the problem was discovered. +handle. This restriction may be eased in a future release. =item lstat() on filehandle %s @@ -2170,7 +2263,8 @@ when the function is called. =item Malformed UTF-8 character (%s) -(W utf8) Perl detected something that didn't comply with UTF-8 encoding rules. +(S utf8) (F) Perl detected something that didn't comply with UTF-8 +encoding rules. One possible cause is that you read in data that you thought to be in UTF-8 but it wasn't (it was for example legacy 8-bit data). Another @@ -2196,6 +2290,14 @@ rules and perl was unable to guess how to make more progress. (F) You tried to unpack something that didn't comply with UTF-8 encoding rules and perl was unable to guess how to make more progress. +=item Maximal count of pending signals (%s) exceeded + +(F) Perl aborted due to a too important number of signals pending. This +usually indicates that your operating system tried to deliver signals +too fast (with a very high priority), starving the perl process from +resources it would need to reach a point where it can process signals +safely. (See L.) + =item %s matches null string many times in regex; marked by <-- HERE in m/%s/ (W regexp) The pattern you've specified would be an infinite loop if the @@ -2700,10 +2802,13 @@ which is odd, because hashes come in key/value pairs. =item Offset outside string -(F) You tried to do a read/write/send/recv operation with an offset -pointing outside the buffer. This is difficult to imagine. The sole -exception to this is that Cing past the buffer will extend -the buffer and zero pad the new area. +(F, W layer) You tried to do a read/write/send/recv/seek operation +with an offset pointing outside the buffer. This is difficult to +imagine. The sole exceptions to this are that zero padding will +take place when going past the end of the string when either +Cing a file, or when seeking past the end of a scalar opened +for I/O (in anticipation of future reads and to imitate the behaviour +with real files). =item %s() on unopened %s @@ -2830,6 +2935,13 @@ page. See L. (P) An internal error. +=item panic: attempt to call %s in %s + +(P) One of the file test operators entered a code branch that calls +an ACL related-function, but that function is not available on this +platform. Earlier checks mean that it should not be possible to +enter this branch on this platform. + =item panic: ck_grep (P) Failed an internal consistency check trying to compile a grep. @@ -2870,6 +2982,11 @@ data. (P) The internal do_trans routines were called with invalid operational data. +=item panic: fold_constants JMPENV_PUSH returned %d + +(P) While attempting folding constants an exception other than an C +failure was caught. + =item panic: frexp (P) The library function frexp() failed, making printf("%f") impossible. @@ -2879,6 +2996,13 @@ data. (P) We popped the context stack to a context with the specified label, and then discovered it wasn't a context we know how to do a goto in. +=item panic: hfreeentries failed to free hash + +(P) The internal routine used to clear a hashes entries tried repeatedly, +but each time something added more entries to the hash. Most likely the hash +contains an object with a reference back to the hash and a destructor that +adds a new object to the hash. + =item panic: INTERPCASEMOD (P) The lexer got into a bad state at a case modifier. @@ -2919,10 +3043,6 @@ references to an object. (P) Something tried to allocate more memory than possible. -=item panic: null array - -(P) One of the internal array routines was passed a null AV pointer. - =item panic: pad_alloc (P) The compiler got confused about which scratch pad it was allocating @@ -3009,6 +3129,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 @@ -3302,6 +3431,11 @@ are outside the range which can be represented by integers internally. One possible workaround is to force Perl to use magical string increment 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 +a dirhandle. Check your control flow. + =item readline() on closed filehandle %s (W closed) The filehandle you're reading from got itself closed sometime @@ -3373,6 +3507,34 @@ 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 or unclosed group in regex; marked by <-- HERE in m/%s/ + +(F) You used something like C<\g{-7}> in your regular expression, but there are +not at least seven sets of closed capturing parentheses in the expression before +where the C<\g{-7}> was located. + +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 >> in your regular +expression, but there is no corresponding named capturing parentheses such +as C<(?'NAME'...)> or C<(?...). 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 @@ -3394,6 +3556,11 @@ terminates. You might use ^# instead. See L. (W syntax) You wrote your assignment operator backwards. The = must always comes last, to avoid ambiguity with subsequent unary operators. +=item rewinddir() attempted on invalid dirhandle %s + +(W io) The dirhandle you tried to do a rewinddir() on is either closed or not +really a dirhandle. Check your control flow. + =item Runaway format (F) Your format contained the ~~ repeat-until-blank sequence, but it @@ -3470,6 +3637,11 @@ the conditional expression, i.e. C<(foo) ? 0 : 1>. (W unopened) You tried to use the seek() or sysseek() function on a filehandle that was either never opened or has since been closed. +=item seekdir() attempted on invalid dirhandle %s + +(W io) The dirhandle you are doing a seekdir() on is either closed or not +really a dirhandle. Check your control flow. + =item select not implemented (F) This machine doesn't implement the select() system call. @@ -3516,6 +3688,11 @@ where the problem was discovered. See L. <-- HERE shows in the regular expression about where the problem was discovered. See L. +=item Sequence \\%s... not terminated in regex; marked by <-- HERE in m/%s/ + +(F) The regular expression expects a mandatory argument following the escape +sequence and this has been omitted or incorrectly written. + =item Sequence (?#... not terminated in regex; marked by <-- HERE in m/%s/ (F) A regular expression comment must be terminated by a closing @@ -3666,6 +3843,16 @@ L. iterate more times than there are characters of input, which is what happened.) See L. +=item State variable %s will be reinitialized + +(W misc) You're declaring a C variable inside a list. The list +assignment will be treated by perl as a regular assignment, which means +that the C variable will be reinitialized each time the statement +is run. The solution to have it initialized only once is to write the +assignment on its own line, as in: + + state $var = 42; + =item Statement unlikely to be reached (W exec) You did an exec() with some statement after it other than a @@ -3699,7 +3886,7 @@ C may break this. (P) The substitution was looping infinitely. (Obviously, a substitution shouldn't iterate more times than there are characters of input, which is what happened.) See the discussion of substitution in -L. +L. =item Substitution pattern not terminated @@ -3827,6 +4014,11 @@ for Perl to reach. Perl is doing you a favor by refusing. (W unopened) You tried to use the tell() function on a filehandle that was either never opened or has since been closed. +=item telldir() attempted on invalid dirhandle %s + +(W io) The dirhandle you tried to telldir() is either closed or not really +a dirhandle. Check your control flow. + =item That use of $[ is unsupported (F) Assignment to C<$[> is now strictly circumscribed, and interpreted @@ -3864,8 +4056,7 @@ instead. =item The 'unique' attribute may only be applied to 'our' variables -(F) Currently this attribute is not supported on C or C -declarations. See L. +(F) This attribute was never supported on C or C declarations. =item This Perl can't reset CRTL environ elements (%s) @@ -3913,7 +4104,7 @@ See L. =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 @@ -4126,6 +4317,13 @@ category that is unknown to perl at this point. Note that if you want to enable a warnings category registered by a module (e.g. C), you must have imported this module + +=item Unknown verb pattern '%s' in regex; marked by <-- HERE in m/%s/ + +(F) You either made a typo or have incorrectly put a C<*> quantifier +after an open brace in your pattern. Check the pattern and review +L for details on legal verb patterns. + first. =item unmatched [ in regex; marked by <-- HERE in m/%s/ @@ -4162,23 +4360,24 @@ subroutine. in your Perl script (or eval). Perhaps you tried to run a compressed script, a binary program, or a directory as a Perl program. -=item /%s/: Unrecognized escape \\%c in character class passed through +=item Unrecognized escape \\%c in character class passed through in regex; marked by <-- HERE in m/%s/ (W regexp) You used a backslash-character combination which is not recognized by Perl inside character classes. The character was understood literally. +The <-- HERE shows in the regular expression about where the +escape was discovered. =item Unrecognized escape \\%c passed through (W misc) You used a backslash-character combination which is not -recognized by Perl. +recognized by Perl. The character was understood literally. =item Unrecognized escape \\%c passed through in regex; marked by <-- HERE in m/%s/ (W regexp) You used a backslash-character combination which is not -recognized by Perl. This combination appears in an interpolated variable or -a C<'>-delimited regular expression. The character was understood -literally. The <-- HERE shows in the regular expression about where the +recognized by Perl. The character was understood literally. +The <-- HERE shows in the regular expression about where the escape was discovered. =item Unrecognized signal name "%s" @@ -4246,6 +4445,21 @@ character to get your parentheses to balance. See L. compressed integer format and could not be converted to an integer. See L. +=item Unterminated verb pattern in regex; marked by <-- HERE in m/%s/ + +(F) You used a pattern of the form C<(*VERB)> but did not terminate +the pattern with a C<)>. Fix the pattern and retry. + +=item Unterminated verb pattern argument in regex; marked by <-- HERE in m/%s/ + +(F) You used a pattern of the form C<(*VERB:ARG)> but did not terminate +the pattern with a C<)>. Fix the pattern and retry. + +=item Unterminated \g{...} pattern in regex; marked by <-- HERE in m/%s/ + +(F) You missed a close brace on a \g{..} pattern (group reference) in +a regular expression. Fix the pattern and retry. + =item Unterminated <> operator (F) The lexer saw a left angle bracket in a place where it was expecting @@ -4337,7 +4551,7 @@ L for more on this. This warning will not be issued for numerical constants equal to 0 or 1 since they are often used in statements like - 1 while sub_with_side_effects() ; + 1 while sub_with_side_effects(); String constants that would normally evaluate to 0 or 1 are warned about. @@ -4592,11 +4806,10 @@ something else of the same name (usually a subroutine) is exported by that module. It usually means you put the wrong funny character on the front of your variable. -=item Variable length lookbehind not implemented in regex; marked by <-- HERE in m/%s/ +=item Variable length lookbehind not implemented in m/%s/ (F) Lookbehind is allowed only for subexpressions whose length is fixed and -known at compile time. The <-- HERE shows in the regular expression about -where the problem was discovered. See L. +known at compile time. See L. =item "%s" variable %s masks earlier declaration in same %s @@ -4629,12 +4842,27 @@ anonymous, using the C syntax. When inner anonymous subs that reference variables in outer subroutines are created, they are automatically rebound to the current values of such variables. +=item Verb pattern '%s' has a mandatory argument in regex; marked by <-- HERE in m/%s/ + +(F) You used a verb pattern that requires an argument. Supply an argument +or check that you are using the right verb. + +=item Verb pattern '%s' may not have an argument in regex; marked by <-- HERE in m/%s/ + +(F) You used a verb pattern that is not allowed an argument. Remove the +argument or check that you are using the right verb. + =item Version number must be a constant number (P) The attempt to translate a C statement into its equivalent C block found an internal inconsistency with the version number. +=item Version string '%s' contains invalid data; ignoring: '%s' + +(W misc) The version string contains invalid characters at the end, which +are being ignored. + =item v-string in use/require is non-portable (W portable) The use of v-strings is non-portable to older, pre-5.6, Perls.