Patch for pod/perlpod.pod
[p5sagit/p5-mst-13.2.git] / pod / perldiag.pod
index 83a30c3..240ebcc 100644 (file)
@@ -16,13 +16,13 @@ desperation):
     (A) An alien error message (not generated by Perl).
 
 Optional warnings are enabled by using the B<-w> switch.  Warnings may
-be captured by setting C<$^Q> to a reference to a routine that will be
+be captured by setting C<$SIG{__WARN__}> to a reference to a routine that will be
 called on each warning instead of printing it.  See L<perlvar>.
 Trappable errors may be trapped using the eval operator.  See
 L<perlfunc/eval>.
 
 Some of these messages are generic.  Spots that vary are denoted with a %s,
-just as in a printf format.  Note that some message start with a %s!
+just as in a printf format.  Note that some messages start with a %s!
 The symbols C<"%-?@> sort before the letters, while C<[> and C<\> sort after.
 
 =over 4
@@ -33,6 +33,14 @@ The symbols C<"%-?@> sort before the letters, while C<[> and C<\> sort after.
 to try to declare one with a package qualifier on the front.  Use local()
 if you want to localize a package variable.
 
+=item "my" variable %s masks earlier declaration in same scope
+
+(S) A lexical variable has been redeclared in the same scope, effectively
+eliminating all access to the previous instance.  This is almost always
+a typographical error.  Note that the earlier variable will still exist
+until the end of the scope or until all closure referents to it are
+destroyed.
+
 =item "no" not allowed in expression
 
 (F) The "no" keyword is recognized and executed at compile time, and returns
@@ -52,7 +60,7 @@ way.  See L<perlfunc/unpack>.
 =item %s (...) interpreted as function
 
 (W) You've run afoul of the rule that says that any list operator followed
-by parentheses turns into a function, with all the list operators arguments 
+by parentheses turns into a function, with all the list operators arguments
 found inside the parens.  See L<perlop/Terms and List Operators (Leftward)>.
 
 =item %s argument is not a HASH element
@@ -102,25 +110,25 @@ before it could possibly have been used.
 =item %s: Command not found.
 
 (A) You've accidentally run your script through B<csh> instead
-of Perl.  Check the <#!> line, or manually feed your script
+of Perl.  Check the E<lt>#!E<gt> line, or manually feed your script
 into Perl yourself.
 
 =item %s: Expression syntax.
 
 (A) You've accidentally run your script through B<csh> instead
-of Perl.  Check the <#!> line, or manually feed your script
+of Perl.  Check the E<lt>#!E<gt> line, or manually feed your script
 into Perl yourself.
 
 =item %s: Undefined variable.
 
 (A) You've accidentally run your script through B<csh> instead
-of Perl.  Check the <#!> line, or manually feed your script
+of Perl.  Check the E<lt>#!E<gt> line, or manually feed your script
 into Perl yourself.
 
 =item %s: not found
 
-(A) You've accidentally run your script through the Bourne shell 
-instead of Perl.  Check the <#!> line, or manually feed your script
+(A) You've accidentally run your script through the Bourne shell
+instead of Perl.  Check the E<lt>#!E<gt> line, or manually feed your script
 into Perl yourself.
 
 =item B<-P> not allowed for setuid/setgid script
@@ -133,6 +141,10 @@ which provides a race condition that breaks security.
 (F) Perl can't peek at the stdio buffer of filehandles when it doesn't
 know about your kind of stdio.  You'll have to use a filename instead.
 
+=item 500 Server error
+
+See Server error.
+
 =item ?+* follows nothing in regexp
 
 (F) You started a regular expression with a quantifier.  Backslash it
@@ -140,7 +152,7 @@ if you meant it literally.   See L<perlre>.
 
 =item @ outside of string
 
-(F) You had a pack template that specified an absolution position outside
+(F) You had a pack template that specified an absolute position outside
 the string being unpacked.  See L<perlfunc/pack>.
 
 =item accept() on closed fd
@@ -150,7 +162,11 @@ the return value of your socket() call?  See L<perlfunc/accept>.
 
 =item Allocation too large: %lx
 
-(F) You can't allocate more than 64K on an MSDOS machine.
+(X) You can't allocate more than 64K on an MSDOS machine.
+
+=item Allocation too large
+
+(F) You can't allocate more than 2^31+"small amount" bytes.
 
 =item Arg too short for msgsnd
 
@@ -219,10 +235,16 @@ could indicate that SvREFCNT_dec() was called too many times, or that
 SvREFCNT_inc() was called too few times, or that the SV was mortalized
 when it shouldn't have been, or that memory has been corrupted.
 
+=item Attempt to use reference as lvalue in substr
+
+(W) You supplied a reference as the first argument to substr() used
+as an lvalue, which is pretty strange.  Perhaps you forgot to
+dereference it first.  See L<perlfunc/substr>.
+
 =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 sized are, respectively,
+shmctl().  In C parlance, the correct sizes are, respectively,
 S<sizeof(struct msqid_ds *)>, S<sizeof(struct semid_ds *)> and
 S<sizeof(struct shmid_ds *)>.
 
@@ -239,7 +261,13 @@ did it in another package.
 =item Bad free() ignored
 
 (S) An internal routine called free() on something that had never been
-malloc()ed in the first place.
+malloc()ed in the first place. Mandatory, but can be disabled by
+setting environment variable C<PERL_BADFREE> to 1.
+
+This message can be quite often seen with DB_File on systems with
+"hard" dynamic linking, like C<AIX> and C<OS/2>. It is a bug of
+C<Berkeley DB> which is left unnoticed if C<DB> uses I<forgiving>
+system malloc().
 
 =item Bad name after %s::
 
@@ -270,10 +298,10 @@ wasn't a symbol table entry.
 (P) An internal request asked to add a hash entry to something that
 wasn't a symbol table entry.
 
-=item Badly places ()'s
+=item Badly placed ()'s
 
 (A) You've accidentally run your script through B<csh> instead
-of Perl.  Check the <#!> line, or manually feed your script
+of Perl.  Check the E<lt>#!E<gt> line, or manually feed your script
 into Perl yourself.
 
 =item BEGIN failed--compilation aborted
@@ -363,7 +391,7 @@ that you can chdir to, possibly because it doesn't exist.
 =item Can't coerce %s to integer in %s
 
 (F) Certain types of SVs, in particular real symbol table entries
-(type GLOB), can't be forced to stop being what they are.  So you can't
+(typeglobs), can't be forced to stop being what they are.  So you can't
 say things like:
 
     *foo += 1;
@@ -378,12 +406,12 @@ but then $foo no longer contains a glob.
 =item Can't coerce %s to number in %s
 
 (F) Certain types of SVs, in particular real symbol table entries
-(type GLOB), can't be forced to stop being what they are.
+(typeglobs), can't be forced to stop being what they are.
 
 =item Can't coerce %s to string in %s
 
 (F) Certain types of SVs, in particular real symbol table entries
-(type GLOB), can't be forced to stop being what they are.
+(typeglobs), can't be forced to stop being what they are.
 
 =item Can't create pipe mailbox
 
@@ -405,7 +433,7 @@ They must have ordinary identifiers as names.
 from a deleted (but still opened) file.  You have to say B<-i>C<.bak>, or some
 such.
 
-=item Can't do inplace edit: %s > 14 characters
+=item Can't do inplace edit: %s E<gt> 14 characters
 
 (S) There isn't enough room in the filename to make a backup name for the file.
 
@@ -437,7 +465,7 @@ your sysadmin why he and/or she removed it.
 (F) This machine doesn't have either waitpid() or wait4(), so only waitpid()
 without flags is emulated.
 
-=item Can't do {n,m} with n > m
+=item Can't do {n,m} with n E<gt> m
 
 (F) Minima must be less than or equal to maxima.  If you really want
 your regexp to match something 0 times, just put {0}.  See L<perlre>.
@@ -484,6 +512,14 @@ levels, the following is missing its final parenthesis:
 
 (F) A fatal error occurred while trying to fork while opening a pipeline.
 
+=item Unsupported function fork
+
+(F) Your version of executable does not support forking.
+
+Note that under some systems, like OS/2, there may be different flavors of
+Perl executables, some of which may support fork, some not. Try changing
+the name you call Perl by to C<perl_>, C<perl__>, and so on.
+
 =item Can't get filespec - stale stat buffer?
 
 (S) A warning peculiar to VMS.  This arises because of the difference between
@@ -527,7 +563,7 @@ do a local.
 
 =item Can't localize lexical variable %s
 
-(F) You used local on a variable name that was previous declared as a
+(F) You used local on a variable name that was previously declared as a
 lexical variable using "my".  This is not allowed.  If you want to
 localize a package variable of the same name, qualify it with the
 package name.
@@ -544,7 +580,7 @@ you just misspelled the name of the file.  See L<perlfunc/require>.
 
 (F) You called a method correctly, and it correctly indicated a package
 functioning as a class, but that package doesn't define that particular
-method, nor does any of it's base classes.  See L<perlobj>.
+method, nor does any of its base classes.  See L<perlobj>.
 
 =item Can't locate package %s for @%s::ISA
 
@@ -580,25 +616,25 @@ Usually this is because you don't have read permission for the file.
 
 (W) You tried to say C<open(CMD, "|cmd|")>, which is not supported.  You can
 try any of several modules in the Perl library to do this, such as
-"open2.pl".  Alternately, direct the pipe's output to a file using ">",
+"open2.pl".  Alternately, direct the pipe's output to a file using "E<gt>",
 and then read it in under a different file handle.
 
 =item Can't open error file %s as stderr
 
 (F) An error peculiar to VMS.  Perl does its own command line redirection, and
-couldn't open the file specified after '2>' or '2>>' on the command line for
-writing.
+couldn't open the file specified after '2E<gt>' or '2E<gt>E<gt>' on the
+command line for writing.
 
 =item Can't open input file %s as stdin
 
 (F) An error peculiar to VMS.  Perl does its own command line redirection, and
-couldn't open the file specified after '<' on the command line for reading.
+couldn't open the file specified after 'E<lt>' on the command line for reading.
 
 =item Can't open output file %s as stdout
 
 (F) An error peculiar to VMS.  Perl does its own command line redirection, and
-couldn't open the file specified after '>' or '>>' on the command line for
-writing.
+couldn't open the file specified after 'E<gt>' or 'E<gt>E<gt>' on the command
+line for writing.
 
 =item Can't open output pipe (name: %s)
 
@@ -673,6 +709,14 @@ message indicates that such a conversion was attempted.
 of upgradability.  Upgrading to undef indicates an error in the
 code calling sv_upgrade.
 
+=item Can't use "my %s" in sort comparison
+
+(F) The global variables $a and $b are reserved for sort comparisons.
+You mentioned $a or $b in the same line as the E<lt>=E<gt> or cmp operator,
+and the variable had earlier been declared as a lexical variable.
+Either qualify the sort variable with the package name, or rename the
+lexical variable.
+
 =item Can't use %s for loop variable
 
 (F) Only a simple scalar variable may be used as a loop variable on a foreach.
@@ -701,11 +745,6 @@ are disallowed.  See L<perlref>.
 (F) A value used as either a hard reference or a symbolic reference must
 be a defined value.  This helps to de-lurk some insidious errors.
 
-=item Can't use delimiter brackets within expression
-
-(F) The ${name} construct is for disambiguating identifiers in strings, not
-in ordinary code.
-
 =item Can't use global %s in "my"
 
 (F) You tried to declare a magical variable as a lexical variable.  This is
@@ -733,7 +772,7 @@ Perhaps you need to copy the value to a temporary, and repeat that.
 
 =item Cannot open temporary file
 
-(F) The create routine failed for some reaon while trying to process
+(F) The create routine failed for some reason while trying to process
 a B<-e> switch.  Maybe your /tmp partition is full, or clobbered.
 
 =item chmod: mode argument is missing initial 0
@@ -745,7 +784,7 @@ a B<-e> switch.  Maybe your /tmp partition is full, or clobbered.
 not realizing that 777 will be interpreted as a decimal number, equivalent
 to 01411.  Octal constants are introduced with a leading 0 in Perl, as in C.
 
-=item Close on unopened file <%s>
+=item Close on unopened file E<lt>%sE<gt>
 
 (W) You tried to close a filehandle that was never opened.
 
@@ -835,17 +874,17 @@ case the conversion routines don't handle.  Drat.
 
 =item Exiting eval via %s
 
-(W) You are exiting an eval by unconventional means, such as a
+(W) You are exiting an eval by unconventional means, such as
 a goto, or a loop control statement.
 
 =item Exiting subroutine via %s
 
-(W) You are exiting a subroutine by unconventional means, such as a
+(W) You are exiting a subroutine by unconventional means, such as
 a goto, or a loop control statement.
 
 =item Exiting substitution via %s
 
-(W) You are exiting a substitution by unconventional means, such as a
+(W) You are exiting a substitution by unconventional means, such as
 a return, a goto, or a loop control statement.
 
 =item Fatal VMS error at %s, line %d
@@ -870,15 +909,17 @@ the FileHandle package.
 
 (W) You tried to write on a read-only filehandle.  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 only
-intended to write the file, use ">" or ">>".  See L<perlfunc/open>.
+"+E<lt>" or "+E<gt>" or "+E<gt>E<gt>" instead of with "E<lt>" or nothing.  If
+you only intended to write the file, use "E<gt>" or "E<gt>E<gt>".  See
+L<perlfunc/open>.
 
 =item Filehandle only opened for input
 
 (W) You tried to write on a read-only filehandle.  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 only
-intended to write the file, use ">" or ">>".  See L<perlfunc/open>.
+"+E<lt>" or "+E<gt>" or "+E<gt>E<gt>" instead of with "E<lt>" or nothing.  If
+you only intended to write the file, use "E<gt>" or "E<gt>E<gt>".  See
+L<perlfunc/open>.
 
 =item Final $ should be \$ or $name
 
@@ -970,11 +1011,14 @@ an emergency basis to prevent a core dump.
 (D) Really old Perl let you omit the % on hash names in some spots.  This
 is now heavily deprecated.
 
-=item Identifier "%s::%s" used only once: possible typo
+=item Ill-formed logical name |%s| in prime_env_iter
 
-(W) Typographical errors often show up as unique identifiers.  If you
-had a good reason for having a unique identifier, then just mention it
-again somehow to suppress the message.
+(W) A warning peculiar to VMS.  A logical name was encountered when preparing
+to iterate over %ENV which violates the syntactic rules governing logical
+names.  Since it cannot be translated normally, it is skipped, and will not
+appear in %ENV.  This may be a benign occurence, as some software packages
+might directly modify logical name tables and introduce non-standard names,
+or it may indicate that a logical name table has been corrupted.
 
 =item Illegal division by zero
 
@@ -997,7 +1041,7 @@ of the octal number stopped before the 8 or 9.
 
 =item Insecure dependency in %s
 
-(F) You tried to do something that the tainting mechanism didn't like. 
+(F) You tried to do something that the tainting mechanism didn't like.
 The tainting mechanism is turned on when you're running setuid or setgid,
 or when you specify B<-T> to turn it on explicitly.  The tainting mechanism
 labels all data that's derived directly or indirectly from the user,
@@ -1008,13 +1052,13 @@ for more information.
 =item Insecure directory in %s
 
 (F) You can't use system(), exec(), or a piped open in a setuid or setgid
-script if $ENV{PATH} contains a directory that is writable by the world.
+script if C<$ENV{PATH}> contains a directory that is writable by the world.
 See L<perlsec>.
 
 =item Insecure PATH
 
 (F) You can't use system(), exec(), or a piped open in a setuid or
-setgid script if $ENV{PATH} is derived from data supplied (or
+setgid script if C<$ENV{PATH}> is derived from data supplied (or
 potentially supplied) by the user.  The script must set the path to a
 known value, using trustworthy data.  See L<perlsec>.
 
@@ -1022,7 +1066,7 @@ known value, using trustworthy data.  See L<perlsec>.
 
 (S) A warning peculiar to VMS.  Perl keeps track of the number
 of times you've called C<fork> and C<exec>, in order to determine
-whether the current call to C<exec> should be affect the current
+whether the current call to C<exec> should affect the current
 script or a subprocess (see L<perlvms/exec>).  Somehow, this count
 has become scrambled, so Perl is making a guess and treating
 this C<exec> as a request to terminate the Perl script
@@ -1086,7 +1130,7 @@ assume that an unbackslashed @ interpolates an array.)
 =item Method for operation %s not found in package %s during blessing
 
 (F) An attempt was made to specify an entry in an overloading table that
-doesn't somehow point to a valid method.  See L<perlovl>.
+doesn't somehow point to a valid method.  See L<overload>.
 
 =item Might be a runaway multi-line %s string starting on line %d
 
@@ -1100,8 +1144,8 @@ ended earlier on the current line.
 
 =item Missing $ on loop variable
 
-(F) Apparently you've been programming in csh too much.  Variables are always
-mentioned with the $ in Perl, unlike in the shells, where it can vary from 
+(F) Apparently you've been programming in B<csh> too much.  Variables are always
+mentioned with the $ in Perl, unlike in the shells, where it can vary from
 one line to the next.
 
 =item Missing comma after first argument to %s function
@@ -1158,8 +1202,15 @@ be created for some peculiar reason.
 
 =item Multidimensional syntax %s not supported
 
-(W) Multidimensional arrays aren't written like $foo[1,2,3].  They're written
-like $foo[1][2][3], as in C.
+(W) Multidimensional arrays aren't written like C<$foo[1,2,3]>.  They're written
+like C<$foo[1][2][3]>, as in C.
+
+=item Name "%s::%s" used only once: possible typo
+
+(W) Typographical errors often show up as unique variable names.  If you
+had a good reason for having a unique name, then just mention it
+again somehow to suppress the message (the C<use vars> pragma is
+provided for just this purpose).
 
 =item Negative length
 
@@ -1223,29 +1274,29 @@ but for some reason the perl5db.pl file (or some facsimile thereof)
 didn't define a DB::sub routine to be called at the beginning of each
 ordinary subroutine call.
 
-=item No error file after 2> or 2>> on command line
+=item No error file after 2E<gt> or 2E<gt>E<gt> on command line
 
 (F) An error peculiar to VMS.  Perl handles its own command line redirection,
-and found a '2>' or a '2>>' on the command line, but can't find the name of the
-file to which to write data destined for stderr.
+and found a '2E<gt>' or a '2E<gt>E<gt>' on the command line, but can't find
+the name of the file to which to write data destined for stderr.
 
-=item No input file after < on command line
+=item No input file after E<lt> on command line
 
 (F) An error peculiar to VMS.  Perl handles its own command line redirection,
-and found a '<' on the command line, but can't find the name of the file from
-which to read data for stdin.
+and found a 'E<lt>' on the command line, but can't find the name of the file
+from which to read data for stdin.
 
-=item No output file after > on command line
+=item No output file after E<gt> on command line
 
 (F) An error peculiar to VMS.  Perl handles its own command line redirection,
-and found a lone '>' at the end of the command line, so it doesn't know whither
-you wanted to redirect stdout.
+and found a lone 'E<gt>' at the end of the command line, so it doesn't know
+whither you wanted to redirect stdout.
 
-=item No output file after > or >> on command line
+=item No output file after E<gt> or E<gt>E<gt> on command line
 
 (F) An error peculiar to VMS.  Perl handles its own command line redirection,
-and found a '>' or a '>>' on the command line, but can't find the name of the
-file to which to write data destined for stdout.
+and found a 'E<gt>' or a 'E<gt>E<gt>' on the command line, but can't find the
+name of the file to which to write data destined for stdout.
 
 =item No Perl script found in input
 
@@ -1292,7 +1343,7 @@ format, but this indicates you did, and that it didn't exist.
 
 =item Not a GLOB reference
 
-(F) Perl was trying to evaluate a reference to a "type glob" (that is,
+(F) Perl was trying to evaluate a reference to a "typeglob" (that is,
 a symbol table entry that looks like C<*foo>), but found a reference to
 something else instead.  You can use the ref() function to find out
 what kind of ref it really was.  See L<perlref>.
@@ -1325,7 +1376,7 @@ See also L<perlref>.
 =item Not a subroutine reference in %OVERLOAD
 
 (F) An attempt was made to specify an entry in an overloading table that
-doesn't somehow point to a valid subroutine.  See L<perlovl>.
+doesn't somehow point to a valid subroutine.  See L<overload>.
 
 =item Not an ARRAY reference
 
@@ -1347,6 +1398,12 @@ See L<perlform>.
 (F) You can't require the null filename, especially since on many machines
 that means the current directory!  See L<perlfunc/require>.
 
+=item Null picture in formline
+
+(F) The first argument to formline must be a valid format picture
+specification.  It was found to be empty, which probably means you
+supplied it an uninitialized value.  See L<perlform>.
+
 =item NULL OP IN RUN
 
 (P) Some internal routine called run() with a null opcode pointer.
@@ -1379,7 +1436,7 @@ since hash lists come in key/value pairs.
 =item Operation `%s' %s: no method found,
 
 (F) An attempt was made to use an entry in an overloading table that
-somehow no longer points to a valid method.  See L<perlovl>.
+somehow no longer points to a valid method.  See L<overload>.
 
 =item Operator or semicolon missing before %s
 
@@ -1396,8 +1453,29 @@ but realloc() wouldn't give it more memory, virtual or otherwise.
 
 =item Out of memory!
 
-(X) The malloc() function returned 0, indicating there was insufficient
-remaining memory (or virtual memory) to satisfy the request.
+(X|F) The malloc() function returned 0, indicating there was insufficient
+remaining memory (or virtual memory) to satisfy the request. Depending
+on the way perl was compiled it may use the contents of C<$^M> as an
+emergency pool after die()ing with this message. In this case the
+error is trappable I<once>.
+
+=item Out of memory during request for %s
+
+(F) The malloc() function returned 0, indicating there was insufficient
+remaining memory (or virtual memory) to satisfy the request. However,
+the request was judged large enough (compile-time default is 64K), so
+a possibility to shut down by trapping this error is granted.
+
+=item Out of memory!
+
+(X|F) The malloc() function returned 0, indicating there was insufficient
+remaining memory (or virtual memory) to satisfy the request. 
+
+The request was judged to be small, so the possibility to trap it
+depends on the way perl was compiled. By default it is not
+trappable. However, if compiled for this, Perl may use the contents of
+C<$^M> as an emergency pool after die()ing with this message. In this
+case the error is trappable I<once>.
 
 =item page overflow
 
@@ -1621,7 +1699,7 @@ last argument of the previous construct, for example:
 (S) The subroutine being defined had a predeclared (forward) declaration
 with a different function prototype.
 
-=item Read on closed filehandle <%s>
+=item Read on closed filehandle E<lt>%sE<gt>
 
 (W) The filehandle you're reading from got itself closed sometime before now.
 Check your logic flow.
@@ -1657,7 +1735,7 @@ expression compiler gave it.
 
 =item regexp too big
 
-(F) The current implementation of regular expression uses shorts as
+(F) The current implementation of regular expressions uses shorts as
 address offsets within a string.  Unfortunately this means that if
 the regular expression compiles to longer than 32767, it'll blow up.
 Usually when you want a regular expression this big, there is a better
@@ -1680,8 +1758,8 @@ shifting or popping (for array variables).  See L<perlform>.
 
 (W) You've used an array slice (indicated by @) to select a single value of
 an array.  Generally it's better to ask for a scalar value (indicated by $).
-The difference is that $foo[&bar] always behaves like a scalar, both when
-assigning to it and when evaluating its argument, while @foo[&bar] behaves
+The difference is that C<$foo[&bar]> always behaves like a scalar, both when
+assigning to it and when evaluating its argument, while C<@foo[&bar]> behaves
 like a list when you assign to it, and provides a list context to its
 subscript, which can do weird things if you're only expecting one subscript.
 
@@ -1693,7 +1771,7 @@ L<perlref>.
 =item Script is not setuid/setgid in suidperl
 
 (F) Oddly, the suidperl program was invoked on a script with its setuid
-or setgid bit set.  This doesn't make much sense.
+or setgid bit not set.  This doesn't make much sense.
 
 =item Search pattern not terminated
 
@@ -1743,27 +1821,36 @@ but has not yet been written.  See L<perlre>.
 (F) You used a regular expression extension that doesn't make sense.
 See L<perlre>.
 
+=item Server error
+
+Also known as "500 Server error".  This is a CGI error, not a Perl
+error.  You need to make sure your script is executable, is accessible
+by the user CGI is running the script under (which is probably not
+the user account you tested it under), does not rely on any environment
+variables (like PATH) from the user it isn't running under, and isn't
+in a location where the CGI server can't find it, basically, more or less.
+
 =item setegid() not implemented
 
-(F) You tried to assign to $), and your operating system doesn't support
+(F) You tried to assign to C<$)>, and your operating system doesn't support
 the setegid() system call (or equivalent), or at least Configure didn't
 think so.
 
 =item seteuid() not implemented
 
-(F) You tried to assign to $>, and your operating system doesn't support
+(F) You tried to assign to C<$E<gt>>, and your operating system doesn't support
 the seteuid() system call (or equivalent), or at least Configure didn't
 think so.
 
 =item setrgid() not implemented
 
-(F) You tried to assign to $(, and your operating system doesn't support
+(F) You tried to assign to C<$(>, and your operating system doesn't support
 the setrgid() system call (or equivalent), or at least Configure didn't
 think so.
 
 =item setruid() not implemented
 
-(F) You tried to assign to $<, and your operating system doesn't support
+(F) You tried to assign to C<$<lt>>, and your operating system doesn't support
 the setruid() system call (or equivalent), or at least Configure didn't
 think so.
 
@@ -1807,7 +1894,7 @@ or less than one element.  See L<perlfunc/sort>.
 more times than there are characters of input, which is what happened.)
 See L<perlfunc/split>.
 
-=item Stat on unopened file <%s>
+=item Stat on unopened file E<lt>%sE<gt>
 
 (W) You tried to use the stat() function (or an equivalent file test)
 on a filehandle that was either never opened or has been closed since.
@@ -1880,8 +1967,8 @@ if the error went away.  Sort of the cybernetic version of S<20 questions>.
 
 =item syntax error at line %d: `%s' unexpected
 
-(A) You've accidentally run your script through the Bourne shell 
-instead of Perl.  Check the <#!> line, or manually feed your script
+(A) You've accidentally run your script through the Bourne shell
+instead of Perl.  Check the E<lt>#!E<gt> line, or manually feed your script
 into Perl yourself.
 
 =item System V IPC is not implemented on this machine
@@ -1899,14 +1986,14 @@ Check your logic flow.
 (W) You tried to use the tell() function on a filehandle that was either
 never opened or has been closed since.
 
-=item Test on unopened file <%s>
+=item Test on unopened file E<lt>%sE<gt>
 
 (W) You tried to invoke a file test operator on a filehandle that isn't
 open.  Check your logic.  See also L<perlfunc/-X>.
 
 =item That use of $[ is unsupported
 
-(F) Assignment to $[ is now strictly circumscribed, and interpreted as
+(F) Assignment to C<$[> is now strictly circumscribed, and interpreted as
 a compiler directive.  You may only say one of
 
     $[ = 0;
@@ -1928,7 +2015,7 @@ to the probings of Configure.
 
 (F) Configure couldn't find the crypt() function on your machine,
 probably because your vendor didn't supply it, probably because they
-think the U.S. Govermnment thinks it's a secret, or at least that they
+think the U.S. Government thinks it's a secret, or at least that they
 will continue to pretend that it is.  And if you quote me on that, I
 will deny it.
 
@@ -1953,7 +2040,7 @@ system call to call, silly dilly.
 =item Too many )'s
 
 (A) You've accidentally run your script through B<csh> instead
-of Perl.  Check the <#!> line, or manually feed your script
+of Perl.  Check the E<lt>#!E<gt> line, or manually feed your script
 into Perl yourself.
 
 =item Too many args to syscall
@@ -1987,8 +2074,8 @@ Configure knows about.
 =item Type of arg %d to %s must be %s (not %s)
 
 (F) This function requires the argument in that position to be of a
-certain type.  Arrays must be @NAME or @{EXPR}.  Hashes must be
-%NAME or %{EXPR}.  No implicit dereferencing is allowed--use the
+certain type.  Arrays must be @NAME or C<@{EXPR}>.  Hashes must be
+%NAME or C<%{EXPR}>.  No implicit dereferencing is allowed--use the
 {EXPR} forms as an explicit dereference.  See L<perlref>.
 
 =item umask: argument is missing initial 0
@@ -2120,7 +2207,7 @@ At least, Configure doesn't think so.
 (F) Your machine doesn't support the Berkeley socket mechanism, or at
 least that's what Configure thought.
 
-=item Unterminated <> operator
+=item Unterminated E<lt>E<gt> operator
 
 (F) The lexer saw a left angle bracket in a place where it was expecting
 a term, so it's looking for the corresponding right angle bracket, and not
@@ -2129,7 +2216,7 @@ the line, and you really meant a "less than".
 
 =item Use of $# is deprecated
 
-(D) This was an ill-advised attempt to emulate a poorly defined awk feature.
+(D) This was an ill-advised attempt to emulate a poorly defined B<awk> feature.
 Use an explicit printf() or sprintf() instead.
 
 =item Use of $* is deprecated
@@ -2150,7 +2237,7 @@ from C.  This usually means there's a better way to do it in Perl.
 because there's a better way to do it, and also because the old way has
 bad side effects.
 
-=item Use of bare << to mean <<"" is deprecated
+=item Use of bare E<lt>E<lt> to mean E<lt>E<lt>"" is deprecated
 
 (D) You are now encouraged to use the explicitly quoted form if you
 wish to use a blank line as the terminator of the here-document.
@@ -2198,6 +2285,11 @@ a scalar context, the comma is treated like C's comma operator, which
 throws away the left argument, which is not what you want.  See
 L<perlref> for more on this.
 
+=item untie attempted while %d inner references still exist
+
+(W) A copy of the object returned from C<tie> (or C<tied>) was still
+valid when C<untie> was called.
+
 =item Variable "%s" is not exported
 
 (F) While "use strict" in effect, you referred to a global variable
@@ -2209,13 +2301,13 @@ on the front of your variable.
 =item Variable syntax.
 
 (A) You've accidentally run your script through B<csh> instead
-of Perl.  Check the <#!> line, or manually feed your script
+of Perl.  Check the E<lt>#!E<gt> line, or manually feed your script
 into Perl yourself.
 
 =item Warning: unable to close filehandle %s properly.
 
-(S) The implicit close() done by an open() got an error indication on the 
-close(0.  This usually indicates your filesystem ran out of disk space.
+(S) The implicit close() done by an open() got an error indication on the
+close().  This usually indicates your filesystem ran out of disk space.
 
 =item Warning: Use of "%s" without parens is ambiguous
 
@@ -2293,13 +2385,13 @@ substitution, but stylistically it's better to use the variable form
 because other Perl programmers will expect it, and it works better
 if there are more than 9 backreferences.
 
-=item '|' and '<' may not both be specified on command line
+=item '|' and 'E<lt>' may not both be specified on command line
 
 (F) An error peculiar to VMS.  Perl does its own command line redirection, and
 found that STDIN was a pipe, and that you also tried to redirect STDIN using
-'<'.  Only one STDIN stream to a customer, please.
+'E<lt>'.  Only one STDIN stream to a customer, please.
 
-=item '|' and '>' may not both be specified on command line
+=item '|' and 'E<gt>' may not both be specified on command line
 
 (F) An error peculiar to VMS.  Perl does its own command line redirection, and
 thinks you tried to redirect stdout both to a file and into a pipe to another
@@ -2314,5 +2406,36 @@ streams, such as
     }
     close OUT;
 
+=item Got an error from DosAllocMem:
+
+(P) An error peculiar to OS/2. Most probably you use an obsolete version
+of perl, and should not happen anyway.
+
+=item Malformed PERLLIB_PREFIX
+
+(F) An error peculiar to OS/2. PERLLIB_PREFIX should be of the form
+
+    prefix1;prefix2
+
+or
+
+    prefix1 prefix2
+
+with non-empty prefix1 and prefix2. If C<prefix1> is indeed a prefix of 
+a builtin library search path, prefix2 is substituted. The error may appear
+if components are not found, or are too long. See L<perlos2/"PERLLIB_PREFIX">.
+
+=item PERL_SH_DIR too long
+
+(F) An error peculiar to OS/2. PERL_SH_DIR is the directory to find the 
+C<sh>-shell in. See L<perlos2/"PERL_SH_DIR">.
+
+=item Process terminated by SIG%s
+
+(W) This is a standard message issued by OS/2 applications, while *nix
+applications die in silence. It is considered a feature of the OS/2
+port. One can easily disable this by appropriate sighandlers, see
+L<perlipc/"Signals">.  See L<perlos2/"Process terminated by SIGTERM/SIGINT">.
+
 =back