[PATCH] Removing example layers from MIME::QuotedPrint
[p5sagit/p5-mst-13.2.git] / pod / perldiag.pod
index 6bcd87a..37710b9 100644 (file)
@@ -1,4 +1,3 @@
-//depot/perl/pod/perldiag.pod#272 - edit change 14824 (text)
 =head1 NAME
 
 perldiag - various Perl diagnostics
@@ -45,6 +44,14 @@ letter.
 
 =over 4
 
+=item A thread exited while %d other threads were still running
+
+(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
+thread.  See L<threads>.
+
 =item accept() on closed socket %s
 
 (W closed) You tried to do an accept on a closed socket.  Did you forget
@@ -183,26 +190,26 @@ spots.  This is now heavily deprecated.
 must either both be scalars or both be lists.  Otherwise Perl won't
 know which context to supply to the right side.
 
-=item Attempt to access disallowed key '%s' in a fixed hash
+=item Attempt to access disallowed key '%s' in a restricted hash
 
 (F) The failing code has attempted to get or set a key which is not in
-the current set of allowed keys of a fixed hash.
+the current set of allowed keys of a restricted hash.
 
-=item Attempt to clear a fixed hash
+=item Attempt to clear a restricted hash
 
-(F) It is currently not allowed to clear a fixed hash, even if the
+(F) It is currently not allowed to clear a restricted hash, even if the
 new hash would contain the same keys as before.  This may change in
 the future.
 
-=item Attempt to delete readonly key '%s' from a fixed hash
+=item Attempt to delete readonly key '%s' from a restricted hash
 
 (F) The failing code attempted to delete a key whose value has been
-declared readonly from a fixed hash.
+declared readonly from a restricted hash.
 
-=item Attempt to delete disallowed key '%s' from a fixed hash
+=item Attempt to delete disallowed key '%s' from a restricted hash
 
-(F) The failing code attempted to delete from a fixed hash a key which
-is not in its key set.
+(F) The failing code attempted to delete from a restricted hash a key
+which is not in its key set.
 
 =item Attempt to bless into a reference
 
@@ -682,11 +689,11 @@ editor will have a way to help you find these characters.
 
 =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
@@ -810,6 +817,11 @@ the file, say, by doing C<make install>.
 functioning as a class, but that package doesn't define that particular
 method, nor does any of its base classes.  See L<perlobj>.
 
+=item Can't locate PerlIO%s
+
+(F) You tried to use in open() a PerlIO layer that does not exist,
+e.g. open(FH, ">:nosuchlayer", "somefile").
+
 =item (perhaps you forgot to load "%s"?)
 
 (F) This is an educated guess made in conjunction with the message
@@ -863,6 +875,16 @@ switches, or explicitly, failed for the indicated reason.  Usually this
 is because you don't have read permission for a file which you named on
 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 :
+
+    open FH, '>', $ref;
+
+but your version of perl is compiled without perlio, and this form of
+open is not supported.
+
 =item Can't open bidirectional pipe
 
 (W pipe) You tried to say C<open(CMD, "|cmd|")>, which is not supported.
@@ -1125,13 +1147,6 @@ and so on) and not for Unicode characters, so Perl behaved as if you meant
 If you actually want to pack Unicode codepoints, use the C<"U"> format
 instead.
 
-=item Cleanup skipped %d active threads
-
-(W) When using threaded Perl, the main thread exited while there were
-still other threads running.  This is not a good sign: you should
-either explicitly join the threads, or somehow be certain that all
-the non-main threads have finished.  See L<threads>.
-
 =item close() on unopened filehandle %s
 
 (W unopened) You tried to close a filehandle that was never opened.
@@ -1159,6 +1174,29 @@ in the regular expression engine; or rewriting the regular expression so
 that it is simpler or backtracks less.  (See L<perlfaq2> for information
 on I<Mastering Regular Expressions>.)
 
+=item cond_broadcast() called on unlocked variable
+
+(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
+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
+after the other thread has entered cond_wait() and thus relinquished the
+lock.
+
+
+=item cond_signal() called on unlocked variable
+
+(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
+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
+after the other thread has entered cond_wait() and thus relinquished the
+lock.
+
 =item connect() on closed socket %s
 
 (W closed) You tried to do a connect on a closed socket.  Did you forget
@@ -1183,7 +1221,7 @@ See L<perlsub/"Constant Functions"> and L<constant>.
 
 =item Constant subroutine %s redefined
 
-(S|W redefine) You redefined a subroutine which had previously been
+(S) You redefined a subroutine which had previously been
 eligible for inlining.  See L<perlsub/"Constant Functions"> for
 commentary and workarounds.
 
@@ -1397,7 +1435,7 @@ goto, or a loop control statement.
 
 =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
@@ -1460,13 +1498,25 @@ PDP-11 or something?
 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
 
@@ -2768,23 +2818,23 @@ L<perllocale> section B<LOCALE PROBLEMS>.
 
 =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
@@ -2979,7 +3029,7 @@ declared or defined with a different function prototype.
 
 =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;
@@ -3548,6 +3598,10 @@ F<PERL_ENV_TABLES> (see L<perlvms>) so that the environ array isn't the
 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
@@ -3739,7 +3793,7 @@ discovered.  See L<perlre>.
 
 (F) The second argument of 3-argument open() is not among the list
 of valid modes: C<< < >>, C<< > >>, C<<< >> >>>, C<< +< >>,
-C<< +> >>, C<<< +>> >>>, C<-|>, C<|->.
+C<< +> >>, C<<< +>> >>>, C<-|>, C<|->, C<< <& >>, C<< >& >>.
 
 =item Unknown process %x sent message to prime_env_iter: %s
 
@@ -4092,7 +4146,7 @@ defined B<awk> feature.  Use an explicit printf() or sprintf() instead.
 
 =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.
 
@@ -4112,7 +4166,7 @@ a package qualifier, e.g. C<&our()>, or C<Foo::our()>.
 
 =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>.
@@ -4251,7 +4305,7 @@ the version number.
 
 =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