X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/03d70c897754d6af90de9d0ffe2857d000d6f2d7..32b0a12ef13782071bf034235b06ac707dd77514:/pod/perldiag.pod?ds=sidebyside diff --git a/pod/perldiag.pod b/pod/perldiag.pod index de8956b..4dd8d40 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -72,7 +72,7 @@ Alternatively, you can import the subroutine (or pretend that it's imported with the C pragma). To silently interpret it as the Perl operator, use the C prefix -on the operator (e.g. C) or by declaring the subroutine +on the operator (e.g. C) or declare the subroutine to be an object method (see L or L). @@ -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), and +transliteration (C) 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 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. -=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. =item Bad evalled substitution pattern -(F) You've used the /e switch to evaluate the replacement for a +(F) You've used the C 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. =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 or C 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. @@ -1706,7 +1696,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 +1711,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 +1851,6 @@ shows in the regular expression about where the problem was discovered. prefix1;prefix2 or - prefix1 prefix2 with nonempty prefix1 and prefix2. If C is indeed a prefix of @@ -1889,6 +1876,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. +=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 @@ -2441,6 +2434,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. +=item Package '%s' not found (did you use the incorrect case?) + +(W misc) You included a package file via C, 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 +2794,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. +=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 +3347,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 succeeds. @@ -3497,11 +3509,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. -=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 @@ -3871,6 +3878,13 @@ In code that currently says C you should remove AutoLoader from @ISA and change C to C. +=item Use of "package" with no arguments is deprecated + +(D deprecated) You used the C 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 +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 +3944,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() @@ -4104,8 +4119,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"