=item Can't find %s property definition %s
-(F) You may have tried to use C<\p> which means a Unicode property for
-example \p{Lu} is all uppercase letters. if you did mean to use a
+(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<perlunicode> for the list of known properties.
If you didn't mean to use a Unicode property, escape the C<\p>, either
-C<\\p> (just the C<\p>) or by C<\Q\p> (the rest of the string, until
+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 Exiting format via %s
-(W exiting) You are exiting an eval by unconventional means, such as a
+(W exiting) You are exiting a format by unconventional means, such as a
goto, or a loop control statement.
=item Exiting pseudo-block via %s
to be a read-write filehandle, you needed to open it with "+<" or "+>"
or "+>>" instead of with "<" or nothing. If you intended only to write
the file, use ">" or ">>". See L<perlfunc/open>.
+The warning will also occur if STDOUT (file descriptor 1) or STDERR
+(file descriptor 2) is opened for input, this is a pre-emptive warning in
+case some other part of your program or a child process is expecting STDOUT
+and STDERR to be writable. This can happen accidentally if you
+C<close(STDOUT)> or STDERR and then C<open> an unrelated handle which
+will resuse the lowest numbered available descriptor.
=item Filehandle %s opened only for output
-(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
+(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<perlfunc/open>.
+The warning will also occur if STDIN (file descriptor 0) is opened
+for output - this is a pre-emptive warning in case some other part of your
+program or a child process is expecting STDIN to be readable.
+This can happen accidentally if you C<close(STDIN)> and then C<open> an
+unrelated handle which will resuse the lowest numbered available
+descriptor.
=item Final $ should be \$ or $name
=item perlio: argument list not closed for layer "%s"
-(S) When pushing a layer with arguments onto the Perl I/O system you forgot
-the ) that closes the argument list. (Layers take care of transforming
+(W layer) When pushing a layer with arguments onto the Perl I/O system you
+forgot the ) that closes the argument list. (Layers take care of transforming
data between external and internal representations.) Perl stopped parsing
the layer list at this point and did not attempt to push this layer.
If your program didn't explicitly request the failing operation, it may be
the result of the value of the environment variable PERLIO.
-=item perlio: invalid separator character %s in attribute list
+=item perlio: invalid separator character %s in layer specification list %s
-(S) When pushing layers onto the Perl I/O system, something other than a
+(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.
=item perlio: unknown layer "%s"
-(S) An attempt was made to push an unknown layer onto the Perl I/O
+(W layer) An attempt was made to push an unknown layer onto the Perl I/O
system. (Layers take care of transforming data between external and
internal representations.) Note that some layers, such as C<mmap>,
are not supported in all environments. If your program didn't
=item Prototype not terminated
-(F) You've omitted the closing parenthesis in a function prototype
+(F) You've omitted the closing parenthesis in a function prototype
definition.
=item Quantifier in {,} bigger than %d in regex;
target of the change to
%ENV which produced the warning.
+=item thread failed to start: %s
+
+(F) The entry point function of threads->create() failed for some reason.
+
=item times not implemented
(F) Your version of the C library apparently doesn't do times(). I
=item Use of reference "%s" as array index
-(W) You tried to use a reference as an array index; this probably
+(W misc) You tried to use a reference as an array index; this probably
isn't what you mean, because references in numerical context tend
to be huge numbers, and so usually indicates programmer error.
=item Use of tainted arguments in %s is deprecated
-(W taint) You have supplied C<system()> or C<exec()> with multiple
+(W taint) You have supplied C<system()> or C<exec()> with multiple
arguments and at least one of them is tainted. This used to be allowed
but will become a fatal error in a future version of perl. Untaint your
arguments. See L<perlsec>.
=item v-string in use/require is non-portable
-(W) The use of v-strings is non-portable to older, pre-5.6, Perls.
+(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<use 5.6.1> say
C<use 5.006_001>. This of course won't help: the older Perls