X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/25c09cbfff59747c663fe98ca4036df86a317a59..ac27d13b824657b726428f3a6a1d5b3a01df569e:/pod/perldiag.pod diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 9e7e6d6..caa3915 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -9,7 +9,7 @@ desperation): (W) A warning (optional). (D) A deprecation (optional). - (S) A severe warning (default). + (S) A severe warning (enabled by default). (F) A fatal error (trappable). (P) An internal error you should never see (trappable). (X) A very fatal error (nontrappable). @@ -27,7 +27,7 @@ and B<-W> switches. Warnings may be captured by setting C<$SIG{__WARN__}> to a reference to a routine that will be called on each warning instead of printing it. See L. -Default warnings are always enabled unless they are explicitly disabled +Severe warnings are always enabled, unless they are explicitly disabled with the C pragma or the B<-X> switch. Trappable errors may be trapped using the eval operator. See @@ -133,10 +133,12 @@ for example, turn C<-w -U> into C<-wU>. =item %s argument is not a HASH or ARRAY element -(F) The argument to exists() must be a hash or array element, such as: +(F) The argument to exists() must be a hash or array element or a +subroutine with an ampersand, such as: $foo{$bar} $ref->{"susie"}[12] + &do_something =item %s argument is not a HASH or ARRAY element or slice @@ -193,7 +195,7 @@ know which context to supply to the right side. =item A thread exited while %d threads were running -(W) When using threaded Perl, a thread (not necessarily the main +(W threads)(S) When using threaded Perl, a thread (not necessarily the main thread) exited while there were still other threads running. Usually it's a good idea to first collect the return values of the created threads by joining them, and only then exit from the main @@ -282,6 +284,13 @@ invalid anytime, even before the end of the current statement. Use literals or global values as arguments to the "p" pack() template to avoid this warning. +=item Attempt to reload %s aborted. + +(F) You tried to load a file with C or C that failed to +compile once already. Perl will not try to compile this file again +unless you delete its entry from %INC. See L and +L. + =item Attempt to set length of freed array (W) You tried to set the length of an array which has been freed. You @@ -361,6 +370,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 +495,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 +518,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 +602,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 @@ -574,13 +615,13 @@ quotas or other plumbing problems. =item Can't declare class for non-scalar %s in "%s" (F) Currently, only scalar variables can be declared with a specific -class qualifier in a "my" or "our" declaration. The semantics may be +class qualifier in a "my", "our" or "state" declaration. The semantics may be extended for other types of variables in future. =item Can't declare %s in "%s" -(F) Only scalar, array, and hash variables may be declared as "my" or -"our" variables. They must have ordinary identifiers as names. +(F) Only scalar, array, and hash variables may be declared as "my", "our" or +"state" variables. They must have ordinary identifiers as names. =item Can't do inplace edit: %s is not a regular file @@ -695,15 +736,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 +748,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 @@ -761,6 +802,12 @@ a block, except that it isn't a proper block. This usually occurs if you tried to jump out of a sort() block or subroutine, which is a no-no. See L. +=item Can't goto subroutine from a sort sub (or similar callback) + +(F) The "goto subroutine" call can't be used to jump out of the +comparison sub for a sort(), or from a similar callback (such +as the reduce() function in List::Util). + =item Can't goto subroutine from an eval-%s (F) The "goto subroutine" call can't be used to jump out of an eval @@ -792,6 +839,11 @@ usually double the curlies to get the same effect though, because the inner curlies will be considered a block that loops once. See L. +=item Can't linearize anonymous symbol table + +(F) Perl tried to calculate the method resolution order (MRO) of a +package, but failed because the package stash has no name. + =item Can't load '%s' for module %s (F) The module you tried to load failed to load a dynamic extension. This @@ -805,7 +857,7 @@ extensions. =item Can't localize lexical variable %s (F) You used local on a variable name that was previously declared as a -lexical variable using "my". This is not allowed. If you want to +lexical variable using "my" or "state". This is not allowed. If you want to localize a package variable of the same name, qualify it with the package name. @@ -850,6 +902,13 @@ method, nor does any of its base classes. See L. (W syntax) The @ISA array contained the name of another package that doesn't seem to exist. +=item Can't locate package %s for the parents of %s + +(W syntax) You did not define (or require/use) the first package, +which is named as a (possibly indirect) parent of the second by +C<@ISA> inheritance. Perl will treat this as if the undefined +package had an empty C<@ISA>. + =item Can't locate PerlIO%s (F) You tried to use in open() a PerlIO layer that does not exist, @@ -954,13 +1013,6 @@ missing. You need to figure out where your CRTL misplaced its environ or define F (see L) so that environ is not searched. -=item Can't redefine active sort subroutine %s - -(F) Perl optimizes the internal handling of sort subroutines and keeps -pointers into them. You tried to redefine one such sort subroutine when -it was currently active, which is not allowed. If you really want to do -this, you should write C instead of C. - =item Can't "redo" outside a loop block (F) A "redo" statement was executed to restart the current block, but @@ -1050,19 +1102,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 @@ -1096,7 +1142,7 @@ allowed. See L. (F) Only a simple scalar variable may be used as a loop variable on a foreach. -=item Can't use global %s in "my" +=item Can't use global %s in "%s" (F) You tried to declare a magical variable as a lexical variable. This is not allowed, because the magic can be tied to only one location @@ -1134,7 +1180,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 @@ -1145,6 +1191,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 @@ -1204,7 +1257,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: @@ -1216,8 +1269,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") @@ -1228,8 +1281,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") @@ -1238,6 +1291,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 @@ -1302,6 +1360,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) @@ -1390,13 +1456,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 @@ -1474,6 +1545,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 @@ -1537,6 +1612,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 @@ -1592,9 +1675,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/ @@ -1616,6 +1699,11 @@ you which section of the Perl source code is distressed. (F) Your machine apparently doesn't implement fcntl(). What is this, a PDP-11 or something? +=item FETCHSIZE returned a negative value + +(F) A tied array claimed to have a negative number of elements, which +is not possible. + =item Field too wide in 'u' format in pack (W pack) Each line in an uuencoded string start with a length indicator @@ -1642,13 +1730,13 @@ Another possibility is that you attempted to open filedescriptor 0 =item Filehandle %s reopened as %s only for input (W io) You opened for reading a filehandle that got the same filehandle id -as STDOUT or STDERR. This occured because you closed STDOUT or STDERR +as STDOUT or STDERR. This occurred because you closed STDOUT or STDERR previously. =item Filehandle STDIN reopened as %s only for output (W io) You opened for writing a filehandle that got the same filehandle id -as STDIN. This occured because you closed STDIN previously. +as STDIN. This occurred because you closed STDIN previously. =item Final $ should be \$ or $name @@ -1725,10 +1813,10 @@ L. =item Global symbol "%s" requires explicit package name -(F) You've said "use strict vars", which indicates that all variables -must either be lexically scoped (using "my"), declared beforehand using -"our", or explicitly qualified to say which package the global variable -is in (using "::"). +(F) You've said "use strict" or "use strict vars", which indicates +that all variables must either be lexically scoped (using "my" or "state"), +declared beforehand using "our", or explicitly qualified to say +which package the global variable is in (using "::"). =item glob failed (%s) @@ -1800,6 +1888,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. @@ -1866,7 +1961,7 @@ Interpretation of the octal number stopped before the 8 or 9. =item Illegal switch in PERL5OPT: %s (X) The PERL5OPT environment variable may only be used to set the -following switches: B<-[DIMUdmtw]>. +following switches: B<-[CDIMUdmtw]>. =item Ill-formed CRTL environ value "%s" @@ -1881,11 +1976,6 @@ name or CLI symbol definition when preparing to iterate over %ENV, and didn't see the expected delimiter between key and value, so the line was ignored. -=item Impossible to activate assertion call - -(W assertions) You're calling an assertion function in a block that is -not under the control of the C pragma. - =item (in cleanup) %s (W misc) This prefix usually indicates that a DESTROY() method raised @@ -1897,12 +1987,34 @@ would otherwise result in the same message being repeated. Failure of user callbacks dispatched using the C flag could also result in this warning. See L. +=item Inconsistent hierarchy during C3 merge of class '%s': merging failed on parent '%s' + +(F) The method resolution order (MRO) of the given class is not +C3-consistent, and you have enabled the C3 MRO for this class. See the C3 +documentation in L for more information. + =item In EBCDIC the v-string components cannot exceed 2147483647 (F) An error peculiar to EBCDIC. Internally, v-strings are stored as 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 Initialization of state variables in list context currently forbidden + +(F) Currently the implementation of "state" only permits the initialization +of scalar variables in scalar context. Re-write C as +C to change from list to scalar context. Constructions such +as C will be supported in a future perl release. + =item Insecure dependency in %s (F) You tried to do something that the tainting mechanism didn't like. @@ -1940,6 +2052,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 @@ -1992,6 +2110,21 @@ 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 mro name: '%s' + +(F) You tried to C +or C, where C is not a valid method resolution order (MRO). +(Currently, the only valid ones are C and C). See L. + =item Invalid [] range "%s" in regex; marked by <-- HERE in m/%s/ (F) The range specified in a character class had a minimum character @@ -2060,13 +2193,13 @@ neither as a system call or an ioctl call (SIOCATMARK). =item $* is no longer supported -(D deprecated) The special variable C<$*>, deprecated in older perls, has +(S deprecated, syntax) The special variable C<$*>, deprecated in older perls, has been removed as of 5.9.0 and is no longer supported. You should use the C and C regexp modifiers instead. =item $# is no longer supported -(D deprecated) The special variable C<$#>, deprecated in older perls, has +(S deprecated, syntax) The special variable C<$#>, deprecated in older perls, has been removed as of 5.9.3 and is no longer supported. You should use the printf/sprintf functions instead. @@ -2110,7 +2243,7 @@ effective uids or gids failed. =item length/code after end of string in unpack -(F) While unpacking, the string buffer was alread used up when an unpack +(F) While unpacking, the string buffer was already used up when an unpack length/code combination tried to obtain more data. This results in an undefined value for the length. See L. @@ -2120,11 +2253,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 @@ -2171,11 +2303,19 @@ 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 a string that didn't comply with UTF-8 +encoding rules, even though it had the UTF8 flag on. -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 -possibility is careless use of utf8::upgrade(). +One possible cause is that you set the UTF8 flag yourself for data that +you thought to be in UTF-8 but it wasn't (it was for example legacy +8-bit data). To guard against this, you can use Encode::decode_utf8. + +If you use the C<:encoding(UTF-8)> PerlIO layer for input, invalid byte +sequences are handled gracefully, but if you use C<:utf8>, the flag is +set without validating the data, possibly resulting in this error +message. + +See also L. =item Malformed UTF-16 surrogate @@ -2197,6 +2337,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 @@ -2361,7 +2509,7 @@ See L. (F) Lexically scoped subroutines are not yet implemented. Don't try that yet. -=item "my" variable %s can't be in a package +=item "%s" variable %s can't be in a package (F) Lexically scoped variables aren't in a package, so it doesn't make sense to try to declare one with a package qualifier on the front. Use @@ -2408,6 +2556,12 @@ C appear to be nested quantifiers, but aren't. See L. (S internal) The symbol in question was declared but somehow went out of scope before it could possibly have been used. +=item next::method/next::can/maybe::next::method cannot find enclosing method + +(F) C needs to be called within the context of a +real method in a real package, and it could not find such a context. +See L. + =item No %s allowed while running setuid (F) Certain operations are deemed to be too insecure for a setuid or @@ -2484,6 +2638,13 @@ name of the file from which to read data for stdin. (F) The setuid emulator requires that scripts have a well-formed #! line even on machines that don't support the #! construct. +=item No next::method '%s' found for %s + +(F) C found no further instances of this method name +in the remaining packages of the MRO of this class. If you don't want +it throwing an exception, use C +or C. See L. + =item "no" not allowed in expression (F) The "no" keyword is recognized and executed at compile time, and @@ -2535,7 +2696,7 @@ package has restricted the set of allowed keys using the L pragma. =item No such class %s -(F) You provided a class qualifier in a "my" or "our" declaration, but +(F) You provided a class qualifier in a "my", "our" or "state" declaration, but this class doesn't exist at this point in your program. =item No such pipe open @@ -2628,6 +2789,12 @@ to UTC. If it's not, define the logical name F to translate to the number of seconds which need to be added to UTC to get local time. +=item Non-string passed as bitmask + +(W misc) A number has been passed as a bitmask argument to select(). +Use the vec() function to construct the file descriptor bitmasks for +select. See L + =item Null filename used (F) You can't require the null filename, especially because on many @@ -2695,10 +2862,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 @@ -2719,6 +2889,20 @@ that isn't open. Check your control flow. See also L. (S internal) An internal warning that the grammar is screwed up. +=item Opening dirhandle %s also as a file + +(W io deprecated) You used open() to associate a filehandle to +a symbol (glob or scalar) that already holds a dirhandle. +Although legal, this idiom might render your code confusing +and is deprecated. + +=item Opening filehandle %s also as a directory + +(W io deprecated) You used opendir() to associate a dirhandle to +a symbol (glob or scalar) that already holds a filehandle. +Although legal, this idiom might render your code confusing +and is deprecated. + =item Operation "%s": no method found, %s (F) An attempt was made to perform an overloaded operation for which no @@ -2825,6 +3009,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. @@ -2865,6 +3056,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. @@ -2874,6 +3070,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. @@ -2910,18 +3113,10 @@ references to an object. (P) Something requested a negative number of bytes of malloc. -=item panic: mapstart - -(P) The compiler is screwed up with respect to the map() function. - =item panic: memory wrap (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 @@ -2994,6 +3189,11 @@ was string. (P) The compiler attempted to do a goto, or something weird like that. +=item panic: unimplemented op %s (#%d) called + +(P) The compiler is screwed up and attempted to use an op that isn't permitted +at run time. + =item panic: utf16_to_utf8: odd bytelen (P) Something tried to call utf16_to_utf8 with an odd (as opposed @@ -3003,6 +3203,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 @@ -3013,7 +3222,7 @@ when you meant my ($foo, $bar) = @_; -Remember that "my", "our", and "local" bind tighter than comma. +Remember that "my", "our", "local" and "state" bind tighter than comma. =item C<-p> destination: %s @@ -3085,11 +3294,6 @@ fine from VMS' perspective, it's probably not what you intended. (F) The unpack format P must have an explicit size, not "*". -=item B<-P> not allowed for setuid/setgid script - -(F) The script would have to be opened by the C preprocessor by name, -which provides a race condition that breaks security. - =item POSIX class [:%s:] unknown in regex; marked by <-- HERE in m/%s/ (F) The class in the character class [: :] syntax is unknown. The <-- HERE @@ -3296,6 +3500,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 @@ -3326,8 +3535,9 @@ which is why it's currently left out of your copy. =item Recursive inheritance detected in package '%s' -(F) More than 100 levels of inheritance were used. Probably indicates -an unintended loop in your inheritance hierarchy. +(F) While calculating the method resolution order (MRO) of a package, Perl +believes it found an infinite loop in the C<@ISA> hierarchy. This is a +crude check that bails out after 100 levels of C<@ISA> depth. =item Recursive inheritance detected while looking for method %s @@ -3357,6 +3567,13 @@ Doing so has no effect. (W internal) The internal sv_replace() function was handed a new SV with a reference count of other than 1. +=item Reference to invalid group 0 + +(F) You used C<\g0> or similar in a regular expression. You may refer to +capturing parentheses only with strictly positive integers (normal +backreferences) or with strictly negative integers (relative +backreferences), but using 0 does not make sense. + =item Reference to nonexistent group in regex; marked by <-- HERE in m/%s/ (F) You used something like C<\7> in your regular expression, but there are @@ -3367,6 +3584,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 @@ -3379,7 +3624,7 @@ earlier. =item Repeated format line will never terminate (~~ and @# incompatible) -(F) Your format containes the ~~ repeat-until-blank sequence and a +(F) Your format contains the ~~ repeat-until-blank sequence and a numeric field that will never go blank so that the repetition never terminates. You might use ^# instead. See L. @@ -3388,6 +3633,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 @@ -3464,6 +3714,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. @@ -3510,6 +3765,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 @@ -3693,7 +3953,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 @@ -3821,6 +4081,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 @@ -3858,8 +4123,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) @@ -3875,7 +4139,7 @@ target of the change to =item thread failed to start: %s -(F) The entry point function of threads->create() failed for some reason. +(W threads)(S) The entry point function of threads->create() failed for some reason. =item times not implemented @@ -3907,7 +4171,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 @@ -4120,6 +4384,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/ @@ -4150,29 +4421,30 @@ reserved word. It's best to put such a word in quotes, or capitalize it somehow, or insert an underbar into it. You might also declare it as a subroutine. -=item Unrecognized character %s +=item Unrecognized character %s in column %d (F) The Perl parser has no idea what to do with the specified character -in your Perl script (or eval). Perhaps you tried to run a compressed -script, a binary program, or a directory as a Perl program. +in your Perl script (or eval) at the specified column. 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" @@ -4240,6 +4512,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 @@ -4331,7 +4618,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. @@ -4475,7 +4762,7 @@ to be huge numbers, and so usually indicates programmer error. If you really do mean it, explicitly numify your reference, like so: C<$array[0+$ref]>. This warning is not given for overloaded objects, either, because you can overload the numification and stringification -operators and then you assumedly know what you are doing. +operators and then you assumably know what you are doing. =item Use of reserved word "%s" is deprecated @@ -4586,15 +4873,14 @@ 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 -(W misc) A "my" or "our" variable has been redeclared in the current +(W misc) A "my", "our" or "state" variable has been redeclared in the current scope or statement, effectively eliminating all access to the previous instance. This is almost always a typographical error. Note that the earlier variable will still exist until the end of the scope or until @@ -4623,26 +4909,31 @@ 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 v-string in use/require is non-portable +=item Version string '%s' contains invalid data; ignoring: '%s' -(W portable) The use of v-strings is non-portable to older, pre-5.6, Perls. -If you want your scripts to be backward portable, use the floating -point version number: for example, instead of C say -C. This of course won't help: the older Perls -won't suddenly start understanding newer features, but at least -they will show a sensible error message indicating the required -minimum version. +(W misc) The version string contains invalid characters at the end, which +are being ignored. =item Warning: something's wrong (W) You passed warn() an empty string (the equivalent of C) or -you called it with no args and C<$_> was empty. +you called it with no args and C<$@> was empty. =item Warning: unable to close filehandle %s properly @@ -4711,16 +5002,6 @@ the beginning of the string being (un)packed. See L. (F) You had a pack template that specified a relative position after the end of the string being unpacked. See L. -=item Xsub "%s" called in sort - -(F) The use of an external subroutine as a sort comparison is not yet -supported. - -=item Xsub called in sort - -(F) The use of an external subroutine as a sort comparison is not yet -supported. - =item YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET! (F) And you probably never will, because you probably don't have the @@ -4744,4 +5025,8 @@ Something Very Wrong. =back +=head1 SEE ALSO + +L, L. + =cut