X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/17a3df4c6a07533e2c03c46fdd27e3ee295d61d0..1043934daf9cf513ca1e0c3e533d2ce8c940681b:/pod/perldiag.pod diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 3d35b1c..7516ef4 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -103,11 +103,12 @@ a missing quote, operator, parenthesis pair or declaration. =item Ambiguous use of %c resolved as operator %c (W ambiguous) C<%>, C<&>, and C<*> are both infix operators (modulus, -bitwise and, and multpication), and you said something like C<*foo * -foo> that might be interpreted as either of them. We assumed you -meant the infix operator, but please try to make it more clear -- in -the example given, you might write C<*foo * foo()> if you really meant -to multiply a glob by the result of calling a function. +bitwise and, and multiplication) I initial special characters +(denoting hashes, subroutines and typeglobs), and you said something +like C<*foo * foo> that might be interpreted as either of them. We +assumed you meant the infix operator, but please try to make it more +clear -- in the example given, you might write C<*foo * foo()> if you +really meant to multiply a glob by the result of calling a function. =item Ambiguous use of %c{%s} resolved to %c%s @@ -118,20 +119,31 @@ the varable, you can just write C<@foo>. If you wanted to call the function, write C<@{foo()}> ... or you could just not have a variable and a function with the same name, and save yourself a lot of trouble. -=item Ambiguous use of %c{%s%s} resolved to %c%s%s +=item Ambiguous use of %c{%s[...]} resolved to %c%s[...] -(W ambiguous) You wrote something like C<${foo[2]}>, which might be -looking for element number 2 of the array named C<@foo>, in which case -please write C<$foo[2]>, or you might have meant to pass an anonymous -arrayref to the function named foo, then do a scalar deref on the -value it returns. If you meant that, write C<${foo([2])}>. +=item Ambiguous use of %c{%s{...}} resolved to %c%s{...} + +(W ambiguous) You wrote something like C<${foo[2]}> (where foo +represents the name of a Perl keyword), which might be looking for +element number 2 of the array named C<@foo>, in which case please write +C<$foo[2]>, or you might have meant to pass an anonymous arrayref to +the function named foo, and then do a scalar deref on the value it +returns. If you meant that, write C<${foo([2])}>. + +In regular expressions, the C<${foo[2]}> syntax is sometimes necessary +to disambiguate between array subscripts and character classes. +C, for instance, will be interpreted as C<$length> +followed by the character class C<[2345]>. If an array subscript is what +you want, you can avoid the warning by changing C +to the unsightly C, by renaming your array to +something that does not coincide with a built-in keyword, or by +simply turning off warnings with C. =item Ambiguous use of -%s resolved as -&%s() (W ambiguous) You wrote something like C<-foo>, which might be the -string C<"-foo"> (outside of C), or a call to the -function C, negated. If you meant the string, just write -C<"-foo">, and please use strict. If you meant the function call, +string C<"-foo">, or a call to the function C, negated. If you meant +the string, just write C<"-foo">. If you meant the function call, write C<-foo()>. =item '|' and '<' may not both be specified on command line @@ -242,8 +254,8 @@ know which context to supply to the right side. (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 +Usually it's a good idea first to collect the return values of the +created threads by joining them, and only then to exit from the main thread. See L. =item Attempt to access disallowed key '%s' in a restricted hash @@ -287,7 +299,7 @@ outside any of those arenas. =item Attempt to free nonexistent shared string -(P internal) Perl maintains a reference counted internal table of +(P internal) Perl maintains a reference-counted internal table of strings to optimize the storage and access of hash keys and other strings. This indicates someone tried to decrement the reference count of a string that can no longer be found in the table. @@ -353,17 +365,17 @@ dereference it first. See L. =item Attribute "locked" is deprecated -(D deprecated) You have used the attributes pragam to modify the "locked" +(D deprecated) You have used the attributes pragma to modify the "locked" attribute on a code reference. The :locked attribute is obsolete, has had no -effect since 5005 threads were removed, and will be removed in the next major +effect since 5005 threads were removed, and will be removed in a future release of Perl 5. =item Attribute "unique" is deprecated -(D deprecated) You have used the attributes pragam to modify the "unique" +(D deprecated) You have used the attributes pragma to modify the "unique" attribute on an array, hash or scalar reference. The :unique attribute has -had no effect since Perl 5.8.8, and will be removed in the next major -release of Perl 5. +had no effect since Perl 5.8.8, and will be removed in a future release +of Perl 5. =item Bad arg length for %s, is %u, should be %d @@ -427,7 +439,7 @@ plugin API. (S malloc) An internal routine called realloc() on something that had never been malloc()ed in the first place. Mandatory, but can be disabled -by setting environment variable C to 1. +by setting the environment variable C to 1. =item Bad symbol for array @@ -514,7 +526,15 @@ check the return value of your socket() call? See L. =item binmode() on closed filehandle %s (W unopened) You tried binmode() on a filehandle that was never opened. -Check you control flow and number of arguments. +Check your control flow and number of arguments. + +=item "\b{" is deprecated; use "\b\{" instead + +=item "\B{" is deprecated; use "\B\{" instead + +(W deprecated, regexp) Use of an unescaped "{" immediately following a +C<\b> or C<\B> is now deprecated so as to reserve its use for Perl +itself in a future release. =item Bit vector size > 32 non-portable @@ -523,7 +543,7 @@ Check you control flow and number of arguments. =item Bizarre copy of %s in %s (P) Perl detected an attempt to copy an internal value that is not -copyable. +copiable. =item Buffer overflow in prime_env_iter: %s @@ -569,7 +589,7 @@ 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. +be directly assigned to. =item Cannot find encoding "%s" @@ -596,12 +616,6 @@ a C block. You probably meant to use C or C. (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 -functioning as a class, but that package doesn't have ANYTHING defined -in it, let alone methods. See L. - =item Can't call method "%s" on an undefined value (F) You used the syntax of a method call, but the slot filled by the @@ -640,13 +654,7 @@ that you can chdir to, possibly because it doesn't exist. (P) For some reason you can't check the filesystem of the script for nosuid. -=item Can't coerce array into hash - -(F) You used an array where a hash was expected, but the array has no -information on how to map from keys to array indices. You can do that -only with arrays that have a hash reference at index 0. - -=item Can't coerce %s to integer in %s +=item Can't coerce %s to %s in %s (F) Certain types of SVs, in particular real symbol table entries (typeglobs), can't be forced to stop being what they are. So you can't @@ -661,16 +669,6 @@ You CAN say but then $foo no longer contains a glob. -=item Can't coerce %s to number in %s - -(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 coerce %s to string in %s - -(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 @@ -681,12 +679,6 @@ or C block. (P) An error peculiar to VMS. The process is suffering from exhausted 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", "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", "our" or @@ -801,14 +793,14 @@ 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}> matches all uppercase letters). If you did mean to use a -Unicode property, see +(F) You may have tried to use C<\p> which means a Unicode +property (for example C<\p{Lu}> matches all uppercase +letters). If you did mean to use a Unicode property, see L -for a complete list of available 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>). +for a complete list of available 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, or +until C<\E>). =item Can't fork: %s @@ -828,12 +820,12 @@ Under VMS, access checks are done by filename, rather than by bits in the stat buffer, so that ACLs and other protections can be taken into account. Unfortunately, Perl assumes that the stat buffer contains all the necessary information, and passes it, instead of the filespec, to -the access checking routine. It will try to retrieve the filespec using +the access-checking routine. It will try to retrieve the filespec using the device name and FID present in the stat buffer, but this works only if you haven't made a subsequent call to the CRTL stat() routine, because the device name is overwritten with each call. If this warning -appears, the name lookup failed, and the access checking routine gave up -and returned FALSE, just to be conservative. (Note: The access checking +appears, the name lookup failed, and the access-checking routine gave up +and returned FALSE, just to be conservative. (Note: The access-checking routine knows about the Perl C operator and file tests, so you shouldn't ever see this warning in response to a Perl command; it arises only if some internal code takes stat buffers lightly.) @@ -989,7 +981,7 @@ a NULL. =item Can't modify non-lvalue subroutine call (F) Subroutines meant to be used in lvalue context should be declared as -such, see L. +such. See L. =item Can't msgrcv to read-only var @@ -1016,7 +1008,7 @@ the command line. =item Can't open a reference (W io) You tried to open a scalar reference for reading or writing, -using the 3-arg open() syntax : +using the 3-arg open() syntax: open FH, '>', $ref; @@ -1099,7 +1091,7 @@ to reopen it to accept binary data. Alas, it failed. (F|P) Error resolving overloading specified by a method name (as opposed to a subroutine reference): no such method callable via the package. If -method name is C, this is an internal error. +the method name is C, this is an internal error. =item Can't return %s from lvalue subroutine @@ -1144,11 +1136,6 @@ with Perl, though, if you really want to do that. however, redefine it while it's running, and you can even undef the redefined subroutine while the old routine is running. Go figure. -=item Can't unshift - -(F) You tried to unshift an "unreal" array that can't be unshifted, such -as the main Perl stack. - =item Can't upgrade %s (%d) to %d (P) The internal sv_upgrade routine adds "members" to an SV, making it @@ -1343,6 +1330,21 @@ uses the character values modulus 256 instead, as if you had provided: unpack("s", "\x{f3}b") +=item "\c{" is deprecated and is more clearly written as ";" + +(D deprecated, syntax) The C<\cI> construct is intended to be a way +to specify non-printable characters. You used it with a "{" which +evaluates to ";", which is printable. It is planned to remove the +ability to specify a semi-colon this way in Perl 5.16. Just use a +semi-colon or a backslash-semi-colon without the "\c". + +=item "\c%c" is more clearly written simply as "%s" + +(W syntax) The C<\cI> construct is intended to be a way to specify +non-printable characters. You used it for a printable one, which is better +written as simply itself, perhaps preceded by a backslash for non-word +characters. + =item close() on unopened filehandle %s (W unopened) You tried to close a filehandle that was never opened. @@ -1414,10 +1416,10 @@ on I.) (W threads) Within a thread-enabled program, you tried to call cond_broadcast() on a variable which wasn't locked. The cond_broadcast() -function is used to wake up another thread that is waiting in a +function is used to wake up another thread that is waiting in a cond_wait(). To ensure that the signal isn't sent before the other thread -has a chance to enter the wait, it is usual for the signaling thread to -first wait for a lock on variable. This lock attempt will only succeed +has a chance to enter the wait, it is usual for the signaling thread +first to wait for a lock on variable. This lock attempt will only succeed after the other thread has entered cond_wait() and thus relinquished the lock. @@ -1425,10 +1427,10 @@ lock. (W threads) Within a thread-enabled program, you tried to call cond_signal() on a variable which wasn't locked. The cond_signal() -function is used to wake up another thread that is waiting in a +function is used to wake up another thread that is waiting in a cond_wait(). To ensure that the signal isn't sent before the other thread -has a chance to enter the wait, it is usual for the signaling thread to -first wait for a lock on variable. This lock attempt will only succeed +has a chance to enter the wait, it is usual for the signaling thread +first to wait for a lock on variable. This lock attempt will only succeed after the other thread has entered cond_wait() and thus relinquished the lock. @@ -1503,21 +1505,6 @@ valid magic number. you have also specified an explicit size for the string. See L. -=item "\c{" is deprecated and is more clearly written as ";" - -(D deprecated, syntax) The C<\cI> construct is intended to be a way -to specify non-printable characters. You used it with a "{" which -evaluates to ";", which is printable. It is planned to remove the -ability to specify a semi-colon this way in Perl 5.16. Just use a -semi-colon or a backslash-semi-colon without the "\c". - -=item "\c%c" is more clearly written simply as "%s" - -(W syntax) The C<\cI> construct is intended to be a way to specify -non-printable characters. You used it for a printable one, which is better -written as simply itself, perhaps preceded by a backslash for non-word -characters. - =item Deep recursion on subroutine "%s" (W recursion) This subroutine has called itself (directly or indirectly) @@ -1554,10 +1541,10 @@ that triggers this error. =item Deprecated character in \N{...}; marked by <-- HERE in \N{%s<-- HERE %s (D deprecated) Just about anything is legal for the C<...> in C<\N{...}>. -But starting in 5.12, non-reasonable ones that don't look like names are -deprecated. A reasonable name begins with an alphabetic character and -continues with any combination of alphanumerics, dashes, spaces, parentheses or -colons. +But starting in 5.12, non-reasonable ones that don't look like names +are deprecated. A reasonable name begins with an alphabetic character +and continues with any combination of alphanumerics, dashes, spaces, +parentheses or colons. =item Deprecated use of my() in false conditional @@ -1617,7 +1604,7 @@ carried away. =item Died (F) You passed die() an empty string (the equivalent of C) or -you called it with no args and both C<$@> and C<$_> were empty. +you called it with no args and C<$@> was empty. =item Document contains no data @@ -1713,10 +1700,11 @@ is unsafe. See L, and L. (F) Perl tried to compile a regular expression containing the C<(?{ ... })> zero-width assertion at run time, as it would when the -pattern contains interpolated values. Since that is a security risk, it -is not allowed. If you insist, you may still do this by explicitly -building the pattern from an interpolated string at run time and using -that in an eval(). See L. +pattern contains interpolated values. Since that is a security risk, +it is not allowed. If you insist, you may still do this by using the +C pragma or by explicitly building the pattern from an +interpolated string at run time and using that in an eval(). See +L. =item %s: Eval-group not allowed, use re 'eval' @@ -1741,7 +1729,8 @@ variable and glob that. =item exec? I'm not *that* kind of operating system -(F) The C function is not implemented in MacPerl. See L. +(F) The C function is not implemented on some systems, e.g., Symbian +OS. See L. =item Execution of %s aborted due to compilation errors. @@ -1821,7 +1810,7 @@ is not possible. (W pack) Each line in an uuencoded string start with a length indicator which can't encode values above 63. So there is no point in asking for a line length bigger than that. Perl will behave as if you specified -C as format. +C as the format. =item Filehandle %s opened only for input @@ -1834,10 +1823,10 @@ write the file, use ">" or ">>". See L. (W io) You tried to read from a filehandle opened only for writing, If you intended it to be a read/write filehandle, you needed to open it -with "+<" or "+>" or "+>>" instead of with "<" or nothing. If you -intended only to read from the file, use "<". See L. -Another possibility is that you attempted to open filedescriptor 0 -(also known as STDIN) for output (maybe you closed STDIN earlier?). +with "+<" or "+>" or "+>>" instead of with ">". If you intended only to +read from the file, use "<". See L. Another possibility +is that you attempted to open filedescriptor 0 (also known as STDIN) for +output (maybe you closed STDIN earlier?). =item Filehandle %s reopened as %s only for input @@ -1953,14 +1942,14 @@ earlier in the line, and you really meant a "less than". =item gmtime(%f) too large -(W overflow) You called C with an number that was larger than +(W overflow) You called C with a number that was larger than it can reliably handle and C probably returned the wrong date. This warning is also triggered with nan (the special not-a-number value). =item gmtime(%f) too small -(W overflow) You called C with an number that was smaller than +(W overflow) You called C with a number that was smaller than it can reliably handle and C probably returned the wrong date. This warning is also triggered with nan (the special not-a-number value). @@ -1977,9 +1966,8 @@ unspecified destination. See L. =item ()-group starts with a count -(F) A ()-group started with a count. A count is -supposed to follow something: a template character or a ()-group. - See L. +(F) A ()-group started with a count. A count is supposed to follow +something: a template character or a ()-group. See L. =item %s had compilation errors. @@ -2011,8 +1999,8 @@ without an intervening space. For example, the two constructs: $a =~ m/$foo/sand $bar $a =~ m/$foo/s and $bar -both currently mean the same thing, but it is planned to disallow the first form -in Perl 5.16. And, +both currently mean the same thing, but it is planned to disallow the first +form in Perl 5.16. And, $a =~ m/$foo/and $bar @@ -2059,7 +2047,7 @@ to your Perl administrator. =item Illegal character in prototype for %s : %s (W illegalproto) An illegal character was found in a prototype declaration. -Legal characters in prototypes are $, @, %, *, ;, [, ], &, and \. +Legal characters in prototypes are $, @, %, *, ;, [, ], &, \, and +. =item Illegal declaration of anonymous subroutine @@ -2183,6 +2171,12 @@ C<$ENV{ENV}>, C<$ENV{BASH_ENV}> or C<$ENV{TERM}> are derived from data supplied (or potentially supplied) by the user. The script must set the path to a known value, using trustworthy data. See L. +=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 %s number (W overflow) The hexadecimal, octal or binary number you have specified @@ -2195,12 +2189,6 @@ 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 @@ -2262,11 +2250,18 @@ 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 hexadecimal number in \N{U+...} + +(F) The character constant represented by C<...> is not a valid hexadecimal +number. Either it is empty, or you tried to use a character other than +0 - 9 or A - F, a - f in a hexadecimal number. + =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. +(F) You tried to C or C, +where C is not a valid method resolution order (MRO). Currently, +the only valid ones supported are C and C, unless you have loaded +a module that is a MRO plugin. See L and L. =item Invalid [] range "%s" in regex; marked by <-- HERE in m/%s/ @@ -2290,8 +2285,8 @@ See L. =item Invalid separator character %s in PerlIO layer specification %s -(W layer) When pushing layers onto the Perl I/O system, something other than a -colon or whitespace was seen between the elements of a layer list. +(W layer) When pushing layers onto the Perl I/O system, something other +than a colon or whitespace was seen between the elements of a layer list. If the previous attribute had a parenthesised parameter list, perhaps that list was terminated too soon. @@ -2316,9 +2311,9 @@ silently ignored. (F) A version number did not meet the "lax" criteria for versions. A "lax" version number is a positive decimal number (integer or decimal-fraction) without exponentiation or else a dotted-decimal -v-string. If the v-string has less than three components, it must have a -leading 'v' character. Otherwise, the leading 'v' is optional. Both -decimal and dotted-decimal versions may have a trailing "alpha" +v-string. If the v-string has fewer than three components, it must +have a leading 'v' character. Otherwise, the leading 'v' is optional. +Both decimal and dotted-decimal versions may have a trailing "alpha" component separated by an underscore character after a fractional or dotted-decimal component. The parenthesized text indicates which criteria were not met. See the L module for more details on @@ -2338,34 +2333,36 @@ strange for a machine that supports C. =item ioctl() on unopened %s (W unopened) You tried ioctl() on a filehandle that was never opened. -Check you control flow and number of arguments. +Check your control flow and number of arguments. =item IO layers (like '%s') unavailable (F) Your Perl has not been configured to have PerlIO, and therefore -you cannot use IO layers. To have PerlIO Perl must be configured +you cannot use IO layers. To have PerlIO, Perl must be configured with 'useperlio'. =item IO::Socket::atmark not implemented on this architecture (F) Your machine doesn't implement the sockatmark() functionality, -neither as a system call or an ioctl call (SIOCATMARK). +neither as a system call nor an ioctl call (SIOCATMARK). =item $* is no longer supported -(D deprecated, syntax) The special variable C<$*>, deprecated in older perls, has -been removed as of 5.9.0 and is no longer supported. In previous versions of perl the use of -C<$*> enabled or disabled multi-line matching within a string. +(D deprecated, syntax) The special variable C<$*>, deprecated in older +perls, has been removed as of 5.9.0 and is no longer supported. In +previous versions of perl the use of C<$*> enabled or disabled multi-line +matching within a string. Instead of using C<$*> you should use the C (and maybe C) regexp -modifiers. (In older versions: when C<$*> was set to a true value then all regular -expressions behaved as if they were written using C.) +modifiers. You can enable C for a lexical scope (even a whole file) +with C. (In older versions: when C<$*> was set to a true value +then all regular expressions behaved as if they were written using C.) =item $# is no longer supported -(D 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. +(D 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. =item `%s' is not a code reference @@ -2414,11 +2411,10 @@ an undefined value for the length. See L. =item Lexing code attempted to stuff non-Latin-1 character into Latin-1 input (F) An extension is attempting to insert text into the current parse -(using L or similar), but -tried to insert a character that couldn't be part of the current input. -This is an inherent pitfall of the stuffing mechanism, and one of the -reasons to avoid it. Where it is necessary to stuff, stuffing only -plain ASCII is recommended. +(using L or similar), but tried to insert a character +that couldn't be part of the current input. This is an inherent pitfall +of the stuffing mechanism, and one of the reasons to avoid it. Where it +is necessary to stuff, stuffing only plain ASCII is recommended. =item Lexing code internal error (%s) @@ -2433,14 +2429,14 @@ L. =item localtime(%f) too large -(W overflow) You called C with an number that was larger +(W overflow) You called C with a number that was larger than it can reliably handle and C probably returned the wrong date. This warning is also triggered with nan (the special not-a-number value). =item localtime(%f) too small -(W overflow) You called C with an number that was smaller +(W overflow) You called C with a number that was smaller than it can reliably handle and C probably returned the wrong date. This warning is also triggered with nan (the special not-a-number value). @@ -2479,14 +2475,14 @@ the definition. values cannot be returned in subroutines used in lvalue context. See L. -=item Malformed integer in [] in pack +=item Malformed integer in [] in pack -(F) Between the brackets enclosing a numeric repeat count only digits +(F) Between the brackets enclosing a numeric repeat count only digits are permitted. See L. =item Malformed integer in [] in unpack -(F) Between the brackets enclosing a numeric repeat count only digits +(F) Between the brackets enclosing a numeric repeat count only digits are permitted. See L. =item Malformed PERLLIB_PREFIX @@ -2526,37 +2522,29 @@ message. See also L. -=item Malformed UTF-16 surrogate - -(F) Perl thought it was reading UTF-16 encoded character data but while -doing it Perl met a malformed Unicode surrogate. - =item Malformed UTF-8 returned by \N (F) The charnames handler returned malformed UTF-8. -=item Malformed UTF-8 string in pack +=item Malformed UTF-8 string in '%c' format in unpack -(F) You tried to pack something that didn't comply with UTF-8 encoding +(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 Malformed UTF-8 string in unpack +=item Malformed UTF-8 string in pack -(F) You tried to unpack something that didn't comply with UTF-8 encoding +(F) You tried to pack something that didn't comply with UTF-8 encoding rules and perl was unable to guess how to make more progress. -=item Malformed UTF-8 string in '%c' format in unpack +=item Malformed UTF-8 string in unpack (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 (%u) exceeded +=item Malformed UTF-16 surrogate -(F) Perl aborted due to a too high 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.) +(F) Perl thought it was reading UTF-16 encoded character data but while +doing it Perl met a malformed Unicode surrogate. =item %s matches null string many times in regex; marked by <-- HERE in m/%s/ @@ -2565,6 +2553,14 @@ regular expression engine didn't specifically check for that. The <-- HERE shows in the regular expression about where the problem was discovered. See L. +=item Maximal count of pending signals (%u) exceeded + +(F) Perl aborted due to too high a 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" may clash with future reserved word (W) This warning may be due to running a perl5 script through a perl4 @@ -2610,10 +2606,10 @@ immediately after the switch, without intervening spaces. =item Missing braces on \N{} (F) Wrong syntax of character name literal C<\N{charname}> within -double-quotish context. This can also happen when there is a space (or -comment) between the C<\N> and the C<{> in a regex with the C modifier. -This modifier does not change the requirement that the brace immediately follow -the C<\N>. +double-quotish context. This can also happen when there is a space +(or comment) between the C<\N> and the C<{> in a regex with the C modifier. +This modifier does not change the requirement that the brace immediately +follow the C<\N>. =item Missing braces on \o{} @@ -2657,30 +2653,29 @@ can vary from one line to the next. =item Missing right brace on \N{} or unescaped left brace after \N -(F) -C<\N> has two meanings. +(F) C<\N> has two meanings. -The traditional one has it followed by a name enclosed -in braces, meaning the character (or sequence of characters) given by that name. -Thus C<\N{ASTERISK}> is another way of writing C<*>, valid in both -double-quoted strings and regular expression patterns. In patterns, it doesn't -have the meaning an unescaped C<*> does. +The traditional one has it followed by a name enclosed in braces, +meaning the character (or sequence of characters) given by that +name. Thus C<\N{ASTERISK}> is another way of writing C<*>, valid in both +double-quoted strings and regular expression patterns. In patterns, +it doesn't have the meaning an unescaped C<*> does. -Starting in Perl 5.12.0, C<\N> also can have an additional meaning (only) in -patterns, namely to match a non-newline character. (This is short for -C<[^\n]>, and like C<.> but is not affected by the C regex modifier.) +Starting in Perl 5.12.0, C<\N> also can have an additional meaning (only) +in patterns, namely to match a non-newline character. (This is short +for C<[^\n]>, and like C<.> but is not affected by the C regex modifier.) -This can lead to some ambiguities. When C<\N> is not followed immediately by a -left brace, Perl assumes the C<[^\n]> meaning. Also, if -the braces form a valid quantifier such as C<\N{3}> or C<\N{5,}>, Perl assumes -that this means to match the given quantity of non-newlines (in these examples, -3; and 5 or more, respectively). In all other case, where there is a C<\N{> -and a matching C<}>, Perl assumes that a character name is desired. +This can lead to some ambiguities. When C<\N> is not followed immediately +by a left brace, Perl assumes the C<[^\n]> meaning. Also, if the braces +form a valid quantifier such as C<\N{3}> or C<\N{5,}>, Perl assumes that this +means to match the given quantity of non-newlines (in these examples, +3; and 5 or more, respectively). In all other case, where there is a +C<\N{> and a matching C<}>, Perl assumes that a character name is desired. -However, if there is no matching C<}>, Perl doesn't know if it was mistakenly -omitted, or if C<[^\n]{> was desired, and -raises this error. If you meant the former, add the right brace; if you meant -the latter, escape the brace with a backslash, like so: C<\N\{> +However, if there is no matching C<}>, Perl doesn't know if it was +mistakenly omitted, or if C<[^\n]{> was desired, and raises this error. +If you meant the former, add the right brace; if you meant the latter, +escape the brace with a backslash, like so: C<\N\{> =item Missing right curly or square bracket @@ -2761,23 +2756,37 @@ See L. (F) Lexically scoped subroutines are not yet implemented. Don't try that yet. -=item "%s" variable %s can't be in a package +=item "my" 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 local() if you want to localize a package variable. +=item Name "%s::%s" used only once: possible typo + +(W once) Typographical errors often show up as unique variable names. +If you had a good reason for having a unique name, then just mention it +again somehow to suppress the message. The C declaration is +provided for this purpose. + +NOTE: This warning detects symbols that have been used only once so $c, @c, +%c, *c, &c, sub c{}, c(), and c (the filehandle or format) are considered +the same; if a program uses $c only once but also uses any of the others it +will not trigger this warning. + =item \N in a character class must be a named character: \N{...} (F) The new (5.12) meaning of C<\N> as C<[^\n]> is not valid in a bracketed -character class, for the same reason that C<.> in a character class loses its -specialness: it matches almost everything, which is probably not what you want. +character class, for the same reason that C<.> in a character class loses +its specialness: it matches almost everything, which is probably not +what you want. =item \N{NAME} must be resolved by the lexer -(F) When compiling a regex pattern, an unresolved named character or sequence -was encountered. This can happen in any of several ways that bypass the lexer, -such as using single-quotish context, or an extra backslash in double quotish: +(F) When compiling a regex pattern, an unresolved named character or +sequence was encountered. This can happen in any of several ways that +bypass the lexer, such as using single-quotish context, or an extra +backslash in double-quotish: $re = '\N{SPACE}'; # Wrong! $re = "\\N{SPACE}"; # Wrong! @@ -2803,24 +2812,6 @@ C<\N> is separated by spaces from the C<{>, in which case, remove the spaces. /\N {SPACE}/x; # Wrong! /\N{SPACE}/x; # ok -=item Name "%s::%s" used only once: possible typo - -(W once) Typographical errors often show up as unique variable names. -If you had a good reason for having a unique name, then just mention it -again somehow to suppress the message. The C declaration is -provided for this purpose. - -NOTE: This warning detects symbols that have been used only once so $c, @c, -%c, *c, &c, sub c{}, c(), and c (the filehandle or format) are considered -the same; if a program uses $c only once but also uses any of the others it -will not trigger this warning. - -=item Invalid hexadecimal number in \N{U+...} - -(F) The character constant represented by C<...> is not a valid hexadecimal -number. Either it is empty, or you tried to use a character other than 0 - 9 -or A - F, a - f in a hexadecimal number. - =item Negative '/' count in unpack (F) The length count obtained from a length/code unpack operation was @@ -2873,7 +2864,7 @@ One possible cause for this is that you expected to have imported a constant to your name space with B or B while no such importing took place, it may for example be that your operating system does not support that particular constant. Hopefully you did use an -explicit import list for the constants you expect to see, please see +explicit import list for the constants you expect to see; please see L and L. While an explicit import list would probably have caught this error earlier it naturally does not remedy the fact that your operating system still does not support that @@ -2890,7 +2881,7 @@ doesn't know where you want to pipe the output from this command. =item No DB::DB routine defined (F) The currently executing code was compiled with the B<-d> switch, but -for some reason the current debugger (e.g. F or a C +for some reason the current debugger (e.g. F or a C module) didn't define a routine to be called at the beginning of each statement. @@ -2981,6 +2972,7 @@ your system. (F) The indicated command line switch needs a mandatory argument, but you haven't specified one. + =item No such class field "%s" in variable %s of type %s (F) You tried to access a key from a hash through the indicated typed variable @@ -2989,13 +2981,13 @@ 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", "our" or "state" declaration, but -this class doesn't exist at this point in your program. +(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 hook: %s -(F) You specified a signal hook that was not recognized by Perl. Currently, Perl -accepts C<__DIE__> and C<__WARN__> as valid signal hooks +(F) You specified a signal hook that was not recognized by Perl. +Currently, Perl accepts C<__DIE__> and C<__WARN__> as valid signal hooks. =item No such pipe open @@ -3089,14 +3081,15 @@ need to be added to UTC to get local time. =item Non-octal character '%c'. Resolved as "%s" -(W digit) In parsing an octal numeric constant, a character was unexpectedly -encountered that isn't octal. The resulting value is as indicated. +(W digit) In parsing an octal numeric constant, a character was +unexpectedly encountered that isn't octal. The resulting value is as +indicated. =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 +select. See L. =item Null filename used @@ -3136,8 +3129,9 @@ the meantime, try using scientific notation (e.g. "1e6" instead of =item Number with no digits -(F) Perl was looking for a number but found nothing that looked like a number. -This happens, for example with C<\o{}>, with no number between the braces. +(F) Perl was looking for a number but found nothing that looked like +a number. This happens, for example with C<\o{}>, with no number between +the braces. =item Octal number in vector unsupported @@ -3439,9 +3433,16 @@ failure was caught. (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: gp_free failed to free glob pointer + +(P) The internal routine used to clear a typeglob's entries tried +repeatedly, but each time something re-created entries in the glob. Most +likely the glob contains an object with a reference back to the glob and a +destructor that adds a new object to the glob. + =item panic: hfreeentries failed to free hash -(P) The internal routine used to clear a hashes entries tried repeatedly, +(P) The internal routine used to clear a hash's 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. @@ -4307,6 +4308,12 @@ unless there was a failure. You probably wanted to use system() instead, which does return. To suppress this warning, put the exec() in a block by itself. +=item "state" 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 +local() if you want to localize a package variable. + =item stat() on unopened filehandle %s (W unopened) You tried to use the stat() function on a filehandle that @@ -4829,10 +4836,10 @@ escape was discovered. recognized by Perl. The character was understood literally, but this may change in a future version of Perl. -=item Unrecognized escape \%c passed through in regex; marked by <-- HERE in m/%s/ +=item Unrecognized escape \%s passed through in regex; marked by <-- HERE in m/%s/ (W regexp) You used a backslash-character combination which is not -recognized by Perl. The character was understood literally, but this may +recognized by Perl. The character(s) were understood literally, but this may change in a future version of Perl. The <-- HERE shows in the regular expression about where the escape was discovered.