make "lstat FH" croak
[p5sagit/p5-mst-13.2.git] / pod / perldiag.pod
index c10d56c..76fb6aa 100644 (file)
@@ -543,9 +543,9 @@ quotas or other plumbing problems.
 
 =item Can't declare class for non-scalar %s in "%s"
 
-(S) Currently, only scalar variables can declared with a specific class
-qualifier in a "my" or "our" declaration.  The semantics may be extended
-for other types of variables in future.
+(F) Currently, only scalar variables can be declared with a specific
+class qualifier in a "my" or "our" declaration.  The semantics may be
+extended for other types of variables in future.
 
 =item Can't declare %s in "%s"
 
@@ -1289,6 +1289,11 @@ something that isn't defined yet, you don't actually have to define the
 subroutine or package before the current location.  You can use an empty
 "sub foo;" or "package FOO;" to enter a "forward" declaration.
 
+=item dump() better written as CORE::dump()
+
+(W misc) You used the obsolescent C<dump()> built-in function, without fully
+qualifying it as C<CORE::dump()>.  Maybe it's a typo.  See L<perlfunc/dump>.
+
 =item Duplicate free() ignored
 
 (S malloc) An internal routine called free() on something that had
@@ -1467,7 +1472,7 @@ to the end of your file without finding such a line.
 (W redefine) You redefined a format.  To suppress this warning, say
 
     {
-       no warnings;
+       no warnings 'redefine';
        eval "format NAME =...";
     }
 
@@ -1605,6 +1610,11 @@ when Perl was built using standard options.  For some reason, your
 version of Perl appears to have been built without this support.  Talk
 to your Perl administrator.
 
+=item Illegal character in prototype for %s : %s
+
+(W syntax) An illegal character was found in a prototype declaration.  Legal
+characters in prototypes are $, @, %, *, ;, [, ], &, and \.
+
 =item Illegal division by zero
 
 (F) You tried to divide a number by 0.  Either something was wrong in
@@ -1639,7 +1649,7 @@ Interpretation of the octal number stopped before the 8 or 9.
 =item Illegal switch in PERL5OPT: %s
 
 (X) The PERL5OPT environment variable may only be used to set the
-following switches: B<-[DIMUdmw]>.
+following switches: B<-[DIMUdmtw]>.
 
 =item Ill-formed CRTL environ value "%s"
 
@@ -1794,13 +1804,14 @@ neither as a system call or an ioctl call (SIOCATMARK).
 
 =item `%s' is not a code reference
 
-(W) The second (fourth, sixth, ...) argument of overload::constant needs
-to be a code reference. Either an anonymous subroutine, or a reference
+(W overload) The second (fourth, sixth, ...) argument of overload::constant
+needs to be a code reference. Either an anonymous subroutine, or a reference
 to a subroutine.
 
 =item `%s' is not an overloadable type
 
-(W) You tried to overload a constant type the overload package is unaware of.
+(W overload) You tried to overload a constant type the overload package is
+unaware of.
 
 =item junk on end of regexp
 
@@ -1835,12 +1846,6 @@ effective uids or gids failed.
 to check the return value of your socket() call?  See
 L<perlfunc/listen>.
 
-=item lstat() on filehandle %s
-
-(W io) You tried to do an lstat on a filehandle.  What did you mean
-by that?  lstat() makes sense only on filenames.  (Perl did a fstat()
-instead on the filehandle.)
-
 =item Lvalue subs returning %s not implemented yet
 
 (F) Due to limitations in the current implementation, array and hash
@@ -1869,6 +1874,13 @@ a builtin library search path, prefix2 is substituted.  The error may
 appear if components are not found, or are too long.  See
 "PERLLIB_PREFIX" in L<perlos2>.
 
+=item Malformed prototype for %s: %s
+
+(F) You tried to use a function with a malformed prototype.  The
+syntax of function prototypes is given a brief compile-time check for
+obvious errors like invalid characters.  A more rigorous check is run
+when the function is called.
+
 =item Malformed UTF-8 character (%s)
 
 Perl detected something that didn't comply with UTF-8 encoding rules.
@@ -2190,6 +2202,11 @@ immediately after the switch, without intervening spaces.
 (F) The indicated command line switch needs a mandatory argument, but
 you haven't specified one.
 
+=item No such class %s
+
+(F) You provided a class qualifier in a "my" or "our" declaration, but
+this class doesn't exist at this point in your program.
+
 =item No such pipe open
 
 (P) An error peculiar to VMS.  The internal routine my_pclose() tried to
@@ -2345,8 +2362,13 @@ See also L<perlport> for writing portable code.
 
 =item Odd number of arguments for overload::constant
 
-(W) The call to overload::constant contained an odd number of arguments.
-The arguments should come in pairs.
+(W overload) The call to overload::constant contained an odd number of
+arguments. The arguments should come in pairs.
+
+=item Odd number of elements in anonymous hash
+
+(W misc) You specified an odd number of elements to initialize a hash,
+which is odd, because hashes come in key/value pairs.
 
 =item Odd number of elements in hash assignment
 
@@ -2487,7 +2509,7 @@ reference.
 (P) We popped the context stack to an eval context, and then discovered
 it wasn't an eval context.
 
-=item panic: pp_match
+=item panic: pp_match%s
 
 (P) The internal pp_match() routine was called with invalid operational
 data.
@@ -2719,7 +2741,7 @@ fine from VMS' perspective, it's probably not what you intended.
 
 marked by <-- HERE in m/%s/
 
-(W unsafe) The character class constructs [: :], [= =], and [. .]  go
+(W regexp) The character class constructs [: :], [= =], and [. .]  go
 I<inside> character classes, the [] are part of the construct, for example:
 /[012[:alpha:]345]/.  Note that [= =] and [. .] are not currently
 implemented; they are simply placeholders for future extensions and will
@@ -2882,7 +2904,7 @@ in L<perlos2>.
 
 =item Prototype mismatch: %s vs %s
 
-(S unsafe) The subroutine being declared or defined had previously been
+(S prototype) The subroutine being declared or defined had previously been
 declared or defined with a different function prototype.
 
 =item Quantifier in {,} bigger than %d in regex;
@@ -3154,11 +3176,9 @@ account you tested it under), does not rely on any environment variables
 location where the CGI server can't find it, basically, more or less.
 Please see the following for more information:
 
-       http://www.cpan.org/doc/FAQs/cgi/idiots-guide.html
-       http://www.cpan.org/doc/FAQs/cgi/perl-cgi-faq.html
-       ftp://rtfm.mit.edu/pub/usenet/news.answers/www/cgi-faq
-       http://hoohoo.ncsa.uiuc.edu/cgi/interface.html
-       http://www-genome.wi.mit.edu/WWW/faqs/www-security-faq.html
+       http://www.perl.org/CGI_MetaFAQ.html
+       http://www.htmlhelp.org/faq/cgifaq.html
+       http://www.w3.org/Security/Faq/
 
 You should also look at L<perlfaq9>.
 
@@ -3275,7 +3295,7 @@ C<can> may break this.
 (W redefine) You redefined a subroutine.  To suppress this warning, say
 
     {
-       no warnings;
+       no warnings 'redefine';
        eval "sub name { ... }";
     }
 
@@ -3495,11 +3515,11 @@ BEGIN block.
 
 =item Too many )'s
 
+=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 into Perl yourself.
 
-=item Too many ('s
-
 =item Trailing \ in regex m/%s/
 
 (F) The regular expression ends with an unbackslashed backslash.
@@ -3603,6 +3623,11 @@ Check the #! line, or manually feed your script into Perl yourself.
 (F) The unexec() routine failed for some reason.  See your local FSF
 representative, who probably put it there in the first place.
 
+=item Unicode character %s is illegal
+
+(W utf8) Certain Unicode characters have been designated off-limits by
+the Unicode standard and should not be generated.  If you really know
+what you are doing you can turn off this warning by C<no warnings 'utf8';>.
 
 =item Unknown BYTEORDER
 
@@ -3640,6 +3665,15 @@ iterating over it, and someone else stuck a message in the stream of
 data Perl expected.  Someone's very confused, or perhaps trying to
 subvert Perl's population of %ENV for nefarious purposes.
 
+=item Unknown warnings category '%s'
+
+(F) An error issued by the C<warnings> pragma. You specified a warnings
+category that is unknown to perl at this point.
+
+Note that if you want to enable a warnings category registered by a module
+(e.g. C<use warnings 'File::Find'>), you must have imported this module
+first.
+
 =item unmatched [ in regex; marked by <-- HERE in m/%s/
 
 (F) The brackets around a character class must match. If you wish to
@@ -4000,11 +4034,13 @@ removed in a future version.
 
 =item UTF-16 surrogate %s
 
-(F) You tried to generate half of an UTF-16 surrogate by requesting
-a Unicode character between the code points 0xD800 and 0xDFFF (inclusive).
-That range is reserved exclusively for the use of UTF-16 encoding
-(by having two 16-bit UCS-2 characters); but Perl encodes its characters
-in UTF-8, so what you got is a very illegal character.
+(W utf8) You tried to generate half of an UTF-16 surrogate by
+requesting a Unicode character between the code points 0xD800 and
+0xDFFF (inclusive).  That range is reserved exclusively for the use of
+UTF-16 encoding (by having two 16-bit UCS-2 characters); but Perl
+encodes its characters in UTF-8, so what you got is a very illegal
+character.  If you really know what you are doing you can turn off
+this warning by C<no warnings 'utf8';>.
 
 =item Value of %s can be "0"; test with defined()
 
@@ -4142,7 +4178,10 @@ So put in parentheses to say what you really mean.
 
 =item Wide character in %s
 
-(W utf8) Perl met a wide character (>255) when it wasn't expecting one.
+(W utf8) Perl met a wide character (>255) when it wasn't expecting
+one.  This warning is by default on for I/O (like print) but can be
+turned off by C<no warnings 'utf8';>.  You are supposed to explicitly
+mark the filehandle with an encoding, see L<open> and L<perlfunc/binmode>.
 
 =item write() on closed filehandle %s
 
@@ -4175,6 +4214,11 @@ supported.
 it already went past any symlink you are presumably trying to look for.
 Use a filename instead.
 
+=item You can't use lstat() on a filehandle
+
+(F) You tried to do an lstat on a filehandle. lstat() makes sense only
+on filenames.
+
 =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