diff options
Diffstat (limited to 'pod/perldiag.pod')
-rw-r--r-- | pod/perldiag.pod | 122 |
1 files changed, 76 insertions, 46 deletions
diff --git a/pod/perldiag.pod b/pod/perldiag.pod index f82cd25409..39112035fb 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -31,6 +31,14 @@ C<"%(-?@> sort before the letters, while C<[> and C<\> sort after. =over 4 +=item "%s" variable %s masks earlier declaration in same %s + +(W) A "my" or "our" variable has been redeclared in the current scope or statement, +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 "my sub" not yet implemented (F) Lexically scoped subroutines are not yet implemented. Don't try that @@ -42,19 +50,16 @@ yet. 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 %s - -(W) A lexical variable has been redeclared in the current scope or statement, -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 no useful value. See L<perlmod>. +=item "our" variable %s redeclared + +(W) You seem to have already declared the same global once before in the +current lexical scope. + =item "use" not allowed in expression (F) The "use" keyword is recognized and executed at compile time, and returns @@ -159,6 +164,11 @@ or a hash or array slice, such as: @foo[$bar, $baz, $xyzzy] @{$ref->[12]}{"susie", "queue"} +=item %s argument is not a subroutine name + +(F) The argument to exists() for C<exists &sub> must be a subroutine +name, and not a subroutine call. C<exists &sub()> will generate this error. + =item %s did not return a true value (F) A required (or used) file must return a true value to indicate that @@ -280,7 +290,7 @@ the string being unpacked. See L<perlfunc/pack>. (F) You wrote C<require E<lt>fileE<gt>> when you should have written C<require 'file'>. -=item accept() on closed socket +=item accept() on closed socket %s (W) You tried to do an accept on a closed socket. Did you forget to check the return value of your socket() call? See L<perlfunc/accept>. @@ -518,7 +528,7 @@ likely depends on its correct operation, Perl just gave up. (4294967295) and therefore non-portable between systems. See L<perlport> for more on portability concerns. -=item bind() on closed socket +=item bind() on closed socket %s (W) You tried to do a bind on a closed socket. Did you forget to check the return value of your socket() call? See L<perlfunc/bind>. @@ -679,10 +689,16 @@ only with arrays that have a hash reference at index 0. (P) An error peculiar to VMS. The process is suffering from exhausted quotas or other plumbing problems. -=item Can't declare %s in my +=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) Only scalar, array, and hash variables may be declared as lexical variables. -They must have ordinary identifiers as names. +=item Can't declare %s in "%s" + +(F) Only scalar, array, and hash variables may be declared as "my" or +"our" variables. They must have ordinary identifiers as names. =item Can't do inplace edit on %s: %s @@ -1187,7 +1203,7 @@ than in the regular expression engine; or rewriting the regular expression so that it is simpler or backtracks less. (See L<perlbook> for information on I<Mastering Regular Expressions>.) -=item connect() on closed socket +=item connect() on closed socket %s (W) You tried to do a connect on a closed socket. Did you forget to check the return value of your socket() call? See L<perlfunc/connect>. @@ -1202,13 +1218,13 @@ See L<perlsub/"Constant Functions"> and L<constant>. =item Constant subroutine %s redefined -(S) You redefined a subroutine which had previously been eligible for +(S|W) You redefined a subroutine which had previously been eligible for inlining. See L<perlsub/"Constant Functions"> for commentary and workarounds. =item Constant subroutine %s undefined -(S) You undefined a subroutine which had previously been eligible for +(W) You undefined a subroutine which had previously been eligible for inlining. See L<perlsub/"Constant Functions"> for commentary and workarounds. @@ -1273,6 +1289,11 @@ See Server error. (W) You probably referred to an imported subroutine &FOO as $FOO or some such. +=item Did you mean "local" instead of "our"? + +(W) Remember that "our" does not localize the declared global variable. +You have declared it again in the same lexical scope, which seems superfluous. + =item Did you mean $ or @ instead of %? (W) You probably said %hash{$key} when you meant $hash{$key} or @hash{@keys}. @@ -1321,7 +1342,7 @@ unlikely to be what you want. =item %s failed--call queue aborted -(F) An untrapped exception was raised while executing a STOP, INIT, or +(F) An untrapped exception was raised while executing a CHECK, INIT, or END subroutine. Processing of the remainder of the queue of such routines has been prematurely ended. @@ -1453,6 +1474,12 @@ a literal "at" sign, or was meant to introduce a variable name that happens to be missing. So you have to put either the backslash or the name. +=item flock() on closed filehandle %s + +(W) The filehandle you're attempting to flock() got itself closed some +time before now. Check your logic flow. flock() operates on filehandles. +Are you attempting to call flock() on a dirhandle by the same name? + =item Format %s redefined (W) You redefined a format. To suppress this warning, say @@ -1489,7 +1516,7 @@ when you meant because if it did, it'd feel morally obligated to return every hostname on the Internet. -=item get%sname() on closed socket +=item get%sname() on closed socket %s (W) You tried to get a socket or peer socket name on a closed socket. Did you forget to check the return value of your socket() call? @@ -1509,8 +1536,9 @@ the line, and you really meant a "less than". =item Global symbol "%s" requires explicit package name (F) You've said "use strict vars", which indicates that all variables -must either be lexically scoped (using "my"), or explicitly qualified to -say which package the global variable is in (using "::"). +must either be lexically scoped (using "my"), declared beforehand using +"our", or explicitly qualified to say which package the global variable +is in (using "::"). =item goto must have label @@ -1556,22 +1584,11 @@ line was ignored. =item Illegal character %s (carriage return) -(F) A carriage return character was found in the input. This is an -error, and not a warning, because carriage return characters can break -multi-line strings, including here documents (e.g., C<print E<lt>E<lt>EOF;>). - -Under Unix, this error is usually caused by executing Perl code -- -either the main program, a module, or an eval'd string -- that was -transferred over a network connection from a non-Unix system without -properly converting the text file format. - -Under systems that use something other than '\n' to delimit lines of -text, this error can also be caused by reading Perl code from a file -handle that is in binary mode (as set by the C<binmode> operator). - -In either case, the Perl code in question will probably need to be -converted with something like C<s/\x0D\x0A?/\n/g> before it can be -executed. +(F) Perl normally treats carriage returns in the program text as it +would any other whitespace, which means you should never see this +error 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 division by zero @@ -1717,7 +1734,7 @@ See L<perlfunc/sprintf>. =item Invalid separator character %s in attribute list -(F) Something other than a comma or whitespace was seen between the +(F) Something other than a colon or whitespace was seen between the elements of an attribute list. If the previous attribute had a parenthesised parameter list, perhaps that list was terminated too soon. See L<attributes>. @@ -1766,7 +1783,7 @@ L<perlfunc/last>. (F) While under the C<use filetest> pragma, switching the real and effective uids or gids failed. -=item listen() on closed socket +=item listen() on closed socket %s (W) You tried to do a listen on a closed socket. Did you forget to check the return value of your socket() call? See L<perlfunc/listen>. @@ -1978,6 +1995,12 @@ where you wanted to redirect 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 package name allowed for variable %s in "our" + +(F) Fully qualified variable names are not allowed in "our" declarations, +because that doesn't make much sense under existing semantics. Such +syntax is reserved for future extensions. + =item No Perl script found in input (F) You called C<perl -x>, but no line was found in the file beginning @@ -2136,9 +2159,15 @@ on portability concerns. See also L<perlport> for writing portable code. +=item Octal number in vector unsupported + +(F) Numbers with a leading C<0> are not currently allowed in vectors. The +octal number interpretation of such numbers may be supported in a future +version. + =item Odd number of elements in hash assignment -(S) You specified an odd number of elements to initialize a hash, which +(W) You specified an odd number of elements to initialize a hash, which is odd, because hashes come in key/value pairs. =item Offset outside string @@ -2384,7 +2413,7 @@ when you meant my ($foo, $bar) = @_; -Remember that "my" and "local" bind closer than comma. +Remember that "my", "our" and "local" bind closer than comma. =item Perl %3.3f required--this is only version %s, stopped @@ -2654,7 +2683,7 @@ that had previously been marked as free. (W) A nearby syntax error was probably caused by a missing semicolon, or possibly some other missing operator, such as a comma. -=item send() on closed socket +=item send() on closed socket %s (W) The socket you're sending to got itself closed sometime before now. Check your logic flow. @@ -2743,7 +2772,7 @@ because the world might have written on it already. (F) You don't have System V shared memory IPC on your system. -=item shutdown() on closed socket +=item shutdown() on closed socket %s (W) You tried to do a shutdown on a closed socket. Seems a bit superfluous. @@ -2881,7 +2910,7 @@ into Perl yourself. machine. In some machines the functionality can exist but be unconfigured. Consult your system support. -=item syswrite() on closed filehandle +=item syswrite() on closed filehandle %s (W) The filehandle you're writing to got itself closed sometime before now. Check your logic flow. @@ -3103,8 +3132,8 @@ representative, who probably put it there in the first place. =item Unknown open() mode '%s' (F) The second argument of 3-argument open() is not among the list -of valid modes: C<L<lt>>, C<L<gt>>, C<E<gt>E<gt>>, C<+L<lt>>, -C<+L<gt>>, C<+E<gt>E<gt>>, C<-|>, C<|->. +of valid modes: C<E<lt>>, C<E<gt>>, C<E<gt>E<gt>>, C<+E<lt>>, +C<+E<gt>>, C<+E<gt>E<gt>>, C<-|>, C<|E<45>>. =item Unknown process %x sent message to prime_env_iter: %s @@ -3492,7 +3521,7 @@ already have a subroutine of that name declared, which means that Perl 5 will try to call the subroutine when the assignment is executed, which is probably not what you want. (If it IS what you want, put an & in front.) -=item %cetsockopt() on closed fd +=item %cetsockopt() on closed socket %s (W) You tried to get or set a socket option on a closed socket. Did you forget to check the return value of your socket() call? @@ -3562,3 +3591,4 @@ in F<README.os2>. =back +=cut |