X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperldiag.pod;h=3963e7e3d4491c0a10bf00cb0f0d78bbd226fb57;hb=bdbb64c22f35e0b11cf29ddb2597039baf475c01;hp=03a5ebe7198eace5b624d8a6b567957a821da10e;hpb=fc8f615e0f1bfc61d321240c5d49d61e3e6f6939;p=p5sagit%2Fp5-mst-13.2.git
diff --git a/pod/perldiag.pod b/pod/perldiag.pod
index 03a5ebe..3963e7e 100644
--- a/pod/perldiag.pod
+++ b/pod/perldiag.pod
@@ -8,7 +8,7 @@ These messages are classified as follows (listed in increasing order of
desperation):
(W) A warning (optional).
- (D) A deprecation (optional).
+ (D) A deprecation (enabled by default).
(S) A severe warning (enabled by default).
(F) A fatal error (trappable).
(P) An internal error you should never see (trappable).
@@ -115,8 +115,8 @@ which 'splits' output into two streams, such as
(W misc) The pattern match (C/>), substitution (C), and
transliteration (C
) operators work on scalar values. If you apply
one of them to an array or a hash, it will convert the array or hash to
-a scalar value -- the length of an array, or the population info of a
-hash -- and then work on that scalar value. This is probably not what
+a scalar value (the length of an array, or the population info of a
+hash) and then work on that scalar value. This is probably not what
you meant to do. See L and L for
alternatives.
@@ -306,7 +306,21 @@ of an array and later assigning through that reference. For example
used as an lvalue, which is pretty strange. Perhaps you forgot to
dereference it first. See L.
-=item Bad arg length for %s, is %d, should be %s
+=item Attribute "locked" is deprecated
+
+(D deprecated) You have used the attributes pragam 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
+release of Perl 5.
+
+=item Attribute "unique" is deprecated
+
+(D deprecated) You have used the attributes pragam 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.
+
+=item Bad arg length for %s, is %d, should be %d
(F) You passed a buffer of the wrong size to one of msgctl(), semctl()
or shmctl(). In C parlance, the correct sizes are, respectively,
@@ -359,6 +373,11 @@ is not the same as
$var = 'myvar';
$sym = "mypack::$var";
+=item Bad plugin affecting keyword '%s'
+
+(F) An extension using the keyword plugin mechanism violated the
+plugin API.
+
=item Bad realloc() ignored
(S malloc) An internal routine called realloc() on something that had
@@ -507,6 +526,11 @@ from that type of reference to a typeglob.
(P) Perl detected an attempt to copy a value to an internal type that cannot
be directly assigned not.
+=item Cannot find encoding "%s"
+
+(S io) You tried to apply an encoding that did not exist to a filehandle,
+either with open() or binmode().
+
=item Can only compress unsigned integers in pack
(F) An argument to pack("w",...) was not an integer. The BER compressed
@@ -651,24 +675,6 @@ inplace editing with the B<-i> switch. The file was ignored.
regexp to match something 0 times, just put {0}. The <-- HERE shows in the
regular expression about where the problem was discovered. See L.
-=item Can't do setegid!
-
-(P) The setegid() call failed for some reason in the setuid emulator of
-suidperl.
-
-=item Can't do seteuid!
-
-(P) The setuid emulator of suidperl failed for some reason.
-
-=item Can't do setuid
-
-(F) This typically means that ordinary perl tried to exec suidperl to do
-setuid emulation, but couldn't exec it. It looks for a name of the form
-sperl5.000 in the same directory that the perl executable resides under
-the name perl5.000, typically /usr/local/bin on Unix machines. If the
-file is there, check the execute permissions. If it isn't, ask your
-sysadmin why he and/or she removed it.
-
=item Can't do waitpid with flags
(F) This machine doesn't have either waitpid() or wait4(), so only
@@ -716,9 +722,9 @@ is no builtin with the name C.
=item Can't find %s character property "%s"
(F) You used C<\p{}> or C<\P{}> but the character property by that name
-could not be found. Maybe you misspelled the name of the property
-(remember that the names of character properties consist only of
-alphanumeric characters), or maybe you forgot the C or C prefix?
+could not be found. Maybe you misspelled the name of the property?
+See L
+for a complete list of available properties.
=item Can't find label %s
@@ -751,17 +757,24 @@ 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.
+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>).
-=item Can't fork
+=item Can't fork: %s
(F) A fatal error occurred while trying to fork while opening a
pipeline.
+=item Can't fork, trying again in 5 seconds
+
+(W pipe) A fork in a piped open failed with EAGAIN and will be retried
+after five seconds.
+
=item Can't get filespec - stale stat buffer?
(S) A warning peculiar to VMS. This arises because of the difference
@@ -829,6 +842,12 @@ processes, Perl has reset the signal to its default value. This
situation typically indicates that the parent program under which Perl
may be running (e.g. cron) is being very careless.
+=item Can't kill a non-numeric process ID
+
+(F) Process identifiers must be (signed) integers. It is a fatal error to
+attempt to kill() an undefined, empty-string or otherwise non-numeric
+process identifier.
+
=item Can't "last" outside a loop block
(F) A "last" statement was executed to break out of the current block,
@@ -1031,17 +1050,12 @@ probably because you don't have write permission to the directory.
(P) An error peculiar to VMS. Perl thought stdin was a pipe, and tried
to reopen it to accept binary data. Alas, it failed.
-=item Can't resolve method `%s' overloading `%s' in package `%s'
+=item Can't resolve method "%s" overloading "%s" in package "%s"
(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.
-=item Can't reswap uid and euid
-
-(P) The setreuid() call failed for some reason in the setuid emulator of
-suidperl.
-
=item Can't return %s from lvalue subroutine
(F) Perl detected an attempt to return illegal lvalues (such as
@@ -1066,11 +1080,6 @@ list context.
(P) For some reason you can't fstat() the script even though you have it
open already. Bizarre.
-=item Can't swap uid and euid
-
-(P) The setreuid() call failed for some reason in the setuid emulator of
-suidperl.
-
=item Can't take log of %g
(F) For ordinary real numbers, you can't take the logarithm of a
@@ -1150,6 +1159,11 @@ that is already inside a group with a byte-order modifier.
For example you cannot force little-endianness on a type that
is inside a big-endian group.
+=item Can't use keyword '%s' as a label
+
+(F) You attempted to use a reserved keyword, such as C or C,
+as a statement label. This is disallowed since Perl 5.11.0.
+
=item Can't use "my %s" in sort comparison
(F) The global variables $a and $b are reserved for sort comparisons.
@@ -1417,6 +1431,9 @@ L.
infinite recursion, unless you're writing strange benchmark programs, in
which case it indicates something else.
+This threshold can be changed from 100, by recompiling the F binary,
+setting the C pre-processor macro C to the desired value.
+
=item defined(@array) is deprecated
(D deprecated) defined() is not usually useful on arrays because it
@@ -1624,7 +1641,7 @@ variable and glob that.
(F) The C function is not implemented in MacPerl. See L.
-=item Execution of %s aborted due to compilation errors
+=item Execution of %s aborted due to compilation errors.
(F) The final summary message when a Perl compilation fails.
@@ -1832,6 +1849,12 @@ a term, so it's looking for the corresponding right angle bracket, and
not finding it. Chances are you left some needed parentheses out
earlier in the line, and you really meant a "less than".
+=item gmtime(%.0f) too large
+
+(W overflow) You called C with an number that was beyond the 64-bit
+range that it accepts, and some rounding resulted. This warning is also
+triggered with nan (the special not-a-number value).
+
=item Got an error from DosAllocMem
(P) An error peculiar to OS/2. Most probably you're using an obsolete
@@ -1848,7 +1871,7 @@ unspecified destination. See L.
supposed to follow something: a template character or a ()-group.
See L.
-=item %s had compilation errors
+=item %s had compilation errors.
(F) The final summary message when a C fails.
@@ -1908,8 +1931,8 @@ to your Perl administrator.
=item Illegal character in prototype for %s : %s
-(W syntax) An illegal character was found in a prototype declaration. Legal
-characters in prototypes are $, @, %, *, ;, [, ], &, and \.
+(W illegalproto) An illegal character was found in a prototype declaration.
+Legal characters in prototypes are $, @, %, *, ;, [, ], &, and \.
=item Illegal declaration of anonymous subroutine
@@ -1951,7 +1974,7 @@ two from 1 to 32 (or 64, if your platform supports that).
(W digit) You may have tried to use an 8 or 9 in an octal number.
Interpretation of the octal number stopped before the 8 or 9.
-=item Illegal switch in PERL5OPT: %s
+=item Illegal switch in PERL5OPT: -%c
(X) The PERL5OPT environment variable may only be used to set the
following switches: B<-[CDIMUdmtw]>.
@@ -2173,7 +2196,7 @@ strange for a machine that supports C.
(W unopened) You tried ioctl() on a filehandle that was never opened.
Check you control flow and number of arguments.
-=item IO layers (like "%s") unavailable
+=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
@@ -2186,13 +2209,17 @@ neither as a system call or an ioctl call (SIOCATMARK).
=item $* is no longer supported
-(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/m> and C/s> regexp modifiers instead.
+(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.)
=item $# is no longer supported
-(S deprecated, syntax) The special variable C<$#>, deprecated in older perls, has
+(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.
@@ -2240,12 +2267,31 @@ effective uids or gids failed.
length/code combination tried to obtain more data. This results in
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.
+
+=item Lexing code internal error (%s)
+
+(F) Lexing code supplied by an extension violated the lexer's API in a
+detectable way.
+
=item listen() on closed socket %s
(W closed) You tried to do a listen on a closed socket. Did you forget
to check the return value of your socket() call? See
L.
+=item localtime(%.0f) too large
+
+(W overflow) You called C with an number that was beyond the
+64-bit range that it accepts, and some rounding resulted. This warning is also triggered with nan (the special not-a-number value).
+
=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
@@ -2266,6 +2312,14 @@ You may wish to switch to using L explicitly.
by that? lstat() makes sense only on filenames. (Perl did a fstat()
instead on the filehandle.)
+=item lvalue attribute ignored after the subroutine has been defined
+
+(W misc) Making a subroutine an lvalue subroutine after it has been defined
+by declaring the subroutine with a lvalue attribute is not
+possible. To make the the subroutine a lvalue subroutine add the
+lvalue attribute to the definition, or put the the declaration before
+the definition.
+
=item Lvalue subs returning %s not implemented yet
(F) Due to limitations in the current implementation, array and hash
@@ -2321,7 +2375,7 @@ See also L.
=item Malformed UTF-16 surrogate
-Perl thought it was reading UTF-16 encoded character data but while
+(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 string in pack
@@ -2339,9 +2393,9 @@ 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
+=item Maximal count of pending signals (%d) exceeded
-(F) Perl aborted due to a too important number of signals pending. This
+(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
@@ -2386,6 +2440,11 @@ ended earlier on the current line.
(W syntax) An underscore (underbar) in a numeric constant did not
separate two digits.
+=item Missing argument in %s
+
+(W uninitialized) A printf-type format required more arguments than were
+supplied.
+
=item Missing argument to -%c
(F) The argument to the indicated command line switch must follow
@@ -2430,7 +2489,7 @@ can vary from one line to the next.
=item Missing right brace on %s
-(F) Missing right brace in C<\p{...}> or C<\P{...}>.
+(F) Missing right brace in C<\x{...}>, C<\p{...}> or C<\P{...}>.
=item Missing right curly or square bracket
@@ -2484,7 +2543,7 @@ couldn't be created for some peculiar reason.
you omitted the name of the module. Consult L for full details
about C<-M> and C<-m>.
-=item More than one argument to open
+=item More than one argument to '%s' open
(F) The C function has been asked to open multiple files. This
can happen if you are trying to open a pipe to a command that takes a
@@ -2701,6 +2760,11 @@ package has restricted the set of allowed keys using the L pragma.
(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
+
=item No such pipe open
(P) An error peculiar to VMS. The internal routine my_pclose() tried to
@@ -2990,6 +3054,17 @@ the string being unpacked. See L.
the string being unpacked. The string being unpacked was also invalid
UTF-8. See L.
+=item Overloaded dereference did not return a reference
+
+(F) An object with an overloaded dereference operator was dereferenced,
+but the overloaded operation did not return a reference. See
+L.
+
+=item Overloaded qr did not return a REGEXP
+
+(F) An object with a C overload was used as part of a match, but the
+overloaded operation didn't return a compiled regexp. See L.
+
=item %s package attribute may clash with future reserved word: %s
(W reserved) A lowercase attribute name was used that had a
@@ -3206,6 +3281,11 @@ at run time.
(P) Something tried to call utf16_to_utf8 with an odd (as opposed
to even) byte length.
+=item panic: utf16_to_utf8_reversed: odd bytelen
+
+(P) Something tried to call utf16_to_utf8_reversed with an odd (as opposed
+to even) byte length.
+
=item panic: yylex
(P) The lexer got into a bad state while processing a case modifier.
@@ -3250,6 +3330,13 @@ so it was not possible to set up some or all fixed-width byte-order
conversion functions. This is only a problem when you're using the
'<' or '>' modifiers in (un)pack templates. See L.
+=item Perl_pmflag() is deprecated, and will be removed from the XS API
+
+(D deprecated) XS code called the C function C. This was part of
+Perl's listed public API for extending or embedding the perl interpreter. It has
+now been removed from the public API, and will be removed in a future release,
+hence XS code should be re-written not to use it.
+
=item Perl %s required--this is only version %s, stopped
(F) The module in question uses features of a version of Perl more
@@ -3287,10 +3374,6 @@ the problem, however, you will get the same error message each time
you run Perl. How to really fix the problem can be found in
L section B.
-=item Permission denied
-
-(F) The setuid emulator in suidperl decided you were up to no good.
-
=item pid %x not a child
(W exec) A warning peculiar to VMS. Waitpid() was asked to wait for a
@@ -3416,7 +3499,7 @@ to the array you apparently lost track of.
(W ambiguous) You said something like C in a regex.
The regex C translates to: match the word 'foo', the output
-record separartor (see L) and the letter 's' (one time or more)
+record separator (see L) and the letter 's' (one time or more)
followed by the word 'bar'.
If this is what you intended then you can silence the warning by using
@@ -3426,24 +3509,6 @@ If instead you intended to match the word 'foo' at the end of the line
followed by whitespace and the word 'bar' on the next line then you can use
C (for example: C).
-=item pragma "attrs" is deprecated, use "sub NAME : ATTRS" instead
-
-(D deprecated) You have written something like this:
-
- sub doit
- {
- use attrs qw(locked);
- }
-
-You should use the new declaration syntax instead.
-
- sub doit : locked
- {
- ...
-
-The C