=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
literals or global values as arguments to the "p" pack() template to
avoid this warning.
+=item Attempt to set length of freed array
+
+(W) You tried to set the length of an array which has been freed. You
+can do this by storing a reference to the scalar representing the last index
+of an array and later assigning through that reference. For example
+
+ $r = do {my @a; \$#a};
+ $$r = 503
+
=item Attempt to use reference as lvalue in substr
(W substr) You supplied a reference as the first argument to substr()
you tried to jump out of a sort() block or subroutine, which is a no-no.
See L<perlfunc/goto>.
+=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
or define F<PERL_ENV_TABLES> (see L<perlvms>) 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<sort { &func } @x> instead of C<sort func @x>.
-
=item Can't "redo" outside a loop block
(F) A "redo" statement was executed to restart the current block, but
(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
=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
=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<-[CDIMUdmtwA]>.
=item Ill-formed CRTL environ value "%s"
been removed as of 5.9.0 and is no longer supported. You should use the
C<//m> and C<//s> regexp modifiers instead.
+=item $# is no longer supported
+
+(D deprecated) 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
(W overload) The second (fourth, sixth, ...) argument of overload::constant
=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<perlfunc/pack>.
F<SYS$TIMEZONE_DIFFERENTIAL> 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<perlfunc/select>
+
=item Null filename used
(F) You can't require the null filename, especially because on many
(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.
(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.
(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
=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<perlform>.
in Perl 5.9.0 or later that uses the // as the I<defined-or> can be
misparsed by pre-5.9.0 Perls as a non-terminated search pattern.
+=item Search pattern not terminated or ternary operator parsed as search pattern
+
+(F) The lexer couldn't find the final delimiter of a C<?PATTERN?>
+construct.
+
+The question mark is also used as part of the ternary operator (as in
+C<foo ? 0 : 1>) leading to some ambiguous constructions being wrongly
+parsed. One way to disambiguate the parsing is to put parentheses around
+the conditional expression, i.e. C<(foo) ? 0 : 1>.
+
=item %sseek() on unopened filehandle
(W unopened) You tried to use the seek() or sysseek() function on a
(W unopened) You tried to use the stat() function on a filehandle that
was either never opened or has since been closed.
-=item Stub found while resolving method `%s' overloading %s
+=item Stub found while resolving method "%s" overloading "%s"
(P) Overloading resolution over @ISA tree may be broken by importation
stubs. Stubs should never be implicitly created, but explicit calls to
(F) Your Perl was compiled with B<-D>SETUID_SCRIPTS_ARE_SECURE_NOW, but
a version of the setuid emulator somehow got run anyway.
+=item sv_upgrade from type %d down to type %d
+
+(P) Perl tried to force the upgrade an SV to a type which was actually
+inferior to its current type.
+
=item Switch (?(condition)... contains too many branches in regex; marked by <-- HERE in m/%s/
(F) A (?(condition)if-clause|else-clause) construct can have at most two
=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
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.
(F) You attempted to use a feature of printf that is accessible from
only C. This usually means there's a better way to do it in Perl.
-=item Use of $# is deprecated
-
-(D deprecated) This was an ill-advised attempt to emulate a poorly
-defined B<awk> feature. Use an explicit printf() or sprintf() instead.
-
=item Use of %s is deprecated
(D deprecated) The construct indicated is no longer recommended for use,
(F) You had a pack template that specified a relative position after
the end of the string being unpacked. See L<perlfunc/pack>.
-=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