(W) 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 then main
+created threads by joining them, and only then exit from the main
thread. See L<threads>.
=item accept() on closed socket %s
=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 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;
=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