(F) When C<vec> is called in an lvalue context, the second argument must be
greater than or equal to zero.
+=item Attempt to access to key '%_' in fixed hash
+
+(F) A hash has been marked as READONLY at the C level to turn it
+into a "record" with a fixed set of keys. The failing code
+has attempted to get or set the value of a key which does not
+exist or to delete a key.
+
=item Attempt to bless into a reference
(F) The CLASSNAME argument to the bless() operator is expected to be
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,
=item Can't exec "%s": %s
-(W exec) An system(), exec(), or piped open call could not execute the
+(W exec) A system(), exec(), or piped open call could not execute the
named program for the indicated reason. Typical reasons include: the
permissions were wrong on the file, the file wasn't found in
C<$ENV{PATH}>, the executable in question was compiled for another
=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?
traditional to end such a file with a "1;", though any true value would
do. See L<perlfunc/require>.
-=item (Did you mean 0%d instead?)
-
-(W octmode) The mode argument to chmod, mkdir, and umask is usually
-given in octal (octal constants start with a 0, as in C). Did you really
-mean to use a non-octal number?
-
=item (Did you mean &%s instead?)
(W) You probably referred to an imported subroutine &FOO as $FOO or some
"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
=item Illegal octal digit %s
-(F) You used an 8 or 9 in a octal number.
+(F) You used an 8 or 9 in an octal number.
=item Illegal octal digit %s ignored
-(W digit) You may have tried to use an 8 or 9 in a octal number.
+(W digit) You may have tried to use an 8 or 9 in an octal number.
Interpretation of the octal number stopped before the 8 or 9.
=item Illegal switch in PERL5OPT: %s
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
<-- 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
=item lstat() on filehandle %s
-(W io) You tried to do a lstat on a filehandle. What did you mean
+(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.)
prefix1;prefix2
or
-
prefix1 prefix2
with nonempty prefix1 and prefix2. If C<prefix1> is indeed a prefix of
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
(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
not recognized. Say C<kill -l> in your shell to see the valid signal
names on your system.
-=item Non-octal literal mode (%d) specified
-
-(W octmode) The mode argument to chmod, mkdir, and umask is usually
-given in octal (octal constants start with a 0, as in C). Did you really
-mean to use a non-octal number?
-
=item Not a CODE reference
(F) Perl was trying to evaluate a reference to a code value (that is, a
=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").
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
=item perlio: invalid separator character %s in attribute list
(S) When pushing layers onto the Perl I/O system, something other than a
-colon or whitespace was seen between the elements of an layer list.
+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.
process which isn't a subprocess of the current process. While this is
fine from VMS' perspective, it's probably not what you intended.
+=item P must have an explicit size
+
+(F) The unpack format P must have an explicit size, not "*".
+
=item POSIX syntax [%s] belongs inside character classes in regex;
marked by <-- HERE in m/%s/
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
location where the CGI server can't find it, basically, more or less.
Please see the following for more information:
- http://www.perl.com/CPAN/doc/FAQs/cgi/idiots-guide.html
- http://www.perl.com/CPAN/doc/FAQs/cgi/perl-cgi-faq.html
+ 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
=item Substitution pattern not terminated
-(F) The lexer couldn't find the interior delimiter of a s/// or s{}{}
+(F) The lexer couldn't find the interior delimiter of an s/// or s{}{}
construct. Remember that bracketing delimiters count nesting level.
Missing the leading C<$> from variable C<$s> may cause this error.
=item Substitution replacement not terminated
-(F) The lexer couldn't find the final delimiter of a s/// or s{}{}
+(F) The lexer couldn't find the final delimiter of an s/// or s{}{}
construct. Remember that bracketing delimiters count nesting level.
Missing the leading C<$> from variable C<$s> may cause this error.
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.
(W) You did C<use re;> without any arguments. That isn't very useful.
+=item Useless use of sort in scalar context
+
+(W void) You used sort in scalar context, as in :
+
+ my $x = sort @y;
+
+This is not very useful, and perl currently optimizes this away.
+
=item Useless use of %s with no values
(W syntax) You used the push() or unshift() function with no arguments
(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
=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
+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
+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()
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
(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 put a setuid C wrapper around
+about what you want. Your best bet is to put a setuid C wrapper around
your script.
=item You need to quote "%s"