Typo correction in perldebguts.pod
[p5sagit/p5-mst-13.2.git] / pod / perldiag.pod
index de8956b..838b545 100644 (file)
@@ -72,7 +72,7 @@ Alternatively, you can import the subroutine (or pretend that it's
 imported with the C<use subs> pragma).
 
 To silently interpret it as the Perl operator, use the C<CORE::> prefix
-on the operator (e.g. C<CORE::log($x)>) or by declaring the subroutine
+on the operator (e.g. C<CORE::log($x)>) or declare the subroutine
 to be an object method (see L<perlsub/"Subroutine Attributes"> or
 L<attributes>).
 
@@ -112,8 +112,8 @@ which 'splits' output into two streams, such as
 
 =item Applying %s to %s will act on scalar(%s)
 
-(W misc) The pattern match (//), substitution (s///), and
-transliteration (tr///) operators work on scalar values.  If you apply
+(W misc) The pattern match (C<//>), substitution (C<s///>), and
+transliteration (C<tr///>) operators work on scalar values.  If you apply
 one of them to an array or a hash, it will convert the array or hash to
 a scalar value -- the length of an array, or the population info of a
 hash -- and then work on that scalar value.  This is probably not what
@@ -184,7 +184,7 @@ know which context to supply to the right side.
 
 =item Negative offset to vec in lvalue context
 
-(F) When vec is called in an lvalue context, the second argument must be
+(F) When C<vec> is called in an lvalue context, the second argument must be
 greater than or equal to zero.
 
 =item Attempt to bless into a reference
@@ -261,7 +261,7 @@ avoid this warning.
 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
+=item Bad arg length for %s, is %d, should be %s
 
 (F) You passed a buffer of the wrong size to one of msgctl(), semctl()
 or shmctl().  In C parlance, the correct sizes are, respectively,
@@ -270,7 +270,7 @@ S<sizeof(struct shmid_ds *)>.
 
 =item Bad evalled substitution pattern
 
-(F) You've used the /e switch to evaluate the replacement for a
+(F) You've used the C</e> switch to evaluate the replacement for a
 substitution, but perl found a syntax error in the code to evaluate,
 most likely an unexpected right brace '}'.
 
@@ -631,7 +631,7 @@ is no builtin with the name C<word>.
 =item Can't find %s character property "%s"
 
 (F) You used C<\p{}> or C<\P{}> but the character property by that name
-could not be find.  Maybe you mispelled the name of the property
+could not be found. Maybe you misspelled the name of the property
 (remember that the names of character properties consist only of
 alphanumeric characters), or maybe you forgot the C<Is> or C<In> prefix?
 
@@ -1106,16 +1106,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 chmod() mode argument is missing initial 0
-
-(W chmod) A novice will sometimes say
-
-    chmod 777, $filename
-
-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 filehandle %s
 
 (W unopened) You tried to close a filehandle that was never opened.
@@ -1304,6 +1294,10 @@ Your code will be interpreted as an attempt to call a method named
 "elseif" for the class returned by the following block.  This is
 unlikely to be what you want.
 
+=item Empty %s
+
+(F) Empty C<\p{}> or C<\P{}>.
+
 =item entering effective %s failed
 
 (F) While under the C<use filetest> pragma, switching the real and
@@ -1706,7 +1700,6 @@ operations.
 The <-- HERE shows in the regular expression about where the problem was
 discovered.
 
-
 =item Internal inconsistency in tracking vforks
 
 (S) A warning peculiar to VMS.  Perl keeps track of the number of times
@@ -1722,7 +1715,6 @@ terminate the Perl script and execute the specified command.
 <-- HERE shows in the regular expression about where the problem was
 discovered.
 
-
 =item %s (...) interpreted as function
 
 (W syntax) You've run afoul of the rule that says that any list operator
@@ -1863,7 +1855,6 @@ shows in the regular expression about where the problem was discovered.
     prefix1;prefix2
 
 or
-
     prefix1 prefix2
 
 with nonempty prefix1 and prefix2.  If C<prefix1> is indeed a prefix of
@@ -1889,6 +1880,12 @@ regular expression engine didn't specifically check for that.  The <-- HERE
 shows in the regular expression about where the problem was discovered.
 See L<perlre>.
 
+=item "%s" may clash with future reserved word
+
+(W) This warning may be due to running a perl5 script through a perl4
+interpreter, especially if the word that is being warned about is
+"use" or "my".
+
 =item % may only be used in unpack
 
 (F) You can't pack a string by supplying a checksum, because the
@@ -1947,6 +1944,10 @@ can vary from one line to the next.
 (S) This is an educated guess made in conjunction with the message "%s
 found where operator expected".  Often the missing operator is a comma.
 
+=item Missing right brace on %s
+
+(F) Missing right brace in C<\p{...}> or C<\P{...}>.
+
 =item Missing right curly or square bracket
 
 (F) The lexer counted more opening curly or square brackets than closing
@@ -2316,7 +2317,7 @@ supplied it an uninitialized value.  See L<perlform>.
 =item Number too long
 
 (F) Perl limits the representation of decimal numbers in programs to
-about about 250 characters.  You've exceeded that length.  Future
+about 250 characters.  You've exceeded that length.  Future
 versions of Perl are likely to eliminate this arbitrary limitation.  In
 the meantime, try using scientific notation (e.g. "1e6" instead of
 "1_000_000").
@@ -2441,6 +2442,12 @@ package-specific handler.  That name might have a meaning to Perl itself
 some day, even though it doesn't yet.  Perhaps you should use a
 mixed-case attribute name, instead.  See L<attributes>.
 
+=item Package '%s' not found (did you use the incorrect case?)
+
+(W misc) You included a package file via C<use>, but the package name
+did not match the file name. It's possible that you misspelled the
+package name.
+
 =item page overflow
 
 (W io) A single call to write() produced more lines than can fit on a
@@ -2795,6 +2802,13 @@ Perl guesses a reasonable buffer size, but puts a sentinel byte at the
 end of the buffer just in case.  This sentinel byte got clobbered, and
 Perl assumes that memory is now corrupted.  See L<perlfunc/ioctl>.
 
+=item Possible unintended interpolation of %s in string
+
+(W ambiguous) You said something like `@foo' in a double-quoted string
+but there was no array C<@foo> in scope at the time. If you wanted a
+literal @foo, then write it as \@foo; otherwise find out what happened
+to the array you apparently lost track of.
+
 =item Possible Y2K bug: %s
 
 (W y2k) You are concatenating the number 19 with another number, which
@@ -3341,6 +3355,12 @@ questions>.
 of Perl.  Check the #! line, or manually feed your script into Perl
 yourself.
 
+=item syntax error in file %s at line %d, next 2 tokens "%s"
+
+(F) This error is likely to occur if you run a perl5 script through
+a perl4 interpreter, especially if the next 2 tokens are "use strict"
+or "my $var" or "our $var".
+
 =item %s syntax OK
 
 (F) The final summary message when a C<perl -c> succeeds.
@@ -3497,11 +3517,6 @@ 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
-
-(W umask) A umask of 222 is incorrect.  It should be 0222, because octal
-literals always start with 0 in Perl, as in C.
-
 =item umask not implemented
 
 (F) Your machine doesn't implement the umask function and you tried to
@@ -3841,6 +3856,21 @@ returns no useful value.  See L<perlmod>.
 (D deprecated) You are now encouraged to use the explicitly quoted form
 if you wish to use an empty line as the terminator of the here-document.
 
+=item Use of *glob{FILEHANDLE} is deprecated
+
+(D deprecated) You are now encouraged to use the shorter *glob{IO} form
+to access the filehandle slot within a typeglob.
+
+=item Use of chdir('') or chdir(undef) as chdir() deprecated
+
+(D deprecated) chdir() with no arguments is documented to change to
+$ENV{HOME} or $ENV{LOGDIR}.  chdir(undef) and chdir('') share this
+behavior, but that has been deprecated.  In future versions they
+will simply fail.
+
+Be careful to check that what you pass to chdir() is defined and not
+blank, else you might find yourself in your home directory.
+
 =item Use of implicit split to @_ is deprecated
 
 (D deprecated) It makes a lot of work for the compiler when you clobber
@@ -3871,6 +3901,13 @@ In code that currently says C<use AutoLoader; @ISA = qw(AutoLoader);>
 you should remove AutoLoader from @ISA and change C<use AutoLoader;> to
 C<use AutoLoader 'AUTOLOAD';>.
 
+=item Use of "package" with no arguments is deprecated
+
+(D deprecated) You used the C<package> keyword without specifying a package
+name. So no namespace is current at all. Using this can cause many
+otherwise reasonable constructs to fail in baffling ways. C<use strict;>
+instead.
+
 =item Use of %s in printf format not supported
 
 (F) You attempted to use a feature of printf that is accessible from
@@ -3930,16 +3967,17 @@ program.
 
 =item Using a hash as a reference is deprecated
 
-(D deprecated) You tried to use a hash as a reference, as in C<%foo->{"bar"}>
-or C<%$ref->{"hello"}.  Versions of perl <= 5.6.1 used to allow this syntax,
-but shouldn't have. It is now deprecated, and will be removed in a future
-version.
+(D deprecated) You tried to use a hash as a reference, as in
+C<< %foo->{"bar"} >> or C<< %$ref->{"hello"} >>.  Versions of perl <= 5.6.1 
+used to allow this syntax, but shouldn't have. It is now deprecated, and will 
+be removed in a future version.
 
 =item Using an array as a reference is deprecated
 
-(D deprecated) You tried to use an array as a reference, as in C<@foo->[23]>
-or C<@$ref->[99]>.  Versions of perl <= 5.6.1 used to allow this syntax, but
-shouldn't have. It is now deprecated, and will be removed in a future version.
+(D deprecated) You tried to use an array as a reference, as in
+C<< @foo->[23] >> or C<< @$ref->[99] >>.  Versions of perl <= 5.6.1 used to 
+allow this syntax, but shouldn't have. It is now deprecated, and will be 
+removed in a future version.
 
 =item Value of %s can be "0"; test with defined()
 
@@ -4035,6 +4073,16 @@ where the problem was discovered. See L<perlre>.
 its equivalent C<BEGIN> block found an internal inconsistency with
 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.
+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
+won't suddenly start understanding newer features, but at least
+they will show a sensible error message indicating the required
+minimum version.
+
 =item Warning: something's wrong
 
 (W) You passed warn() an empty string (the equivalent of C<warn "">) or
@@ -4104,8 +4152,8 @@ Use a filename instead.
 
 (F) And you probably never will, because you probably don't have the
 sources to your kernel, and your vendor probably doesn't give a rip
-about what you want.  Your best bet is to use the wrapsuid script in the
-eg directory to put a setuid C wrapper around your script.
+about what you want.  Your best bet is to put a setuid C wrapper around 
+your script.
 
 =item You need to quote "%s"