X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperldiag.pod;h=eb84876d4e83ce59f0e5a3015d7946d5ee3d9e6f;hb=c8984b0bd19897e6e30588055ac0338326f20a34;hp=43226e076d518a96fed77ea62dd8c0a664487a0f;hpb=8202fd39354c88c225e4200fee9877f5a082eebe;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 43226e0..eb84876 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -33,11 +33,11 @@ The symbols C<"%(-?@> sort before the letters, while C<[> and C<\> sort after. 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 scope +=item "my" variable %s masks earlier declaration in same %s -(W) A lexical variable has been redeclared in the same scope, effectively -eliminating all access to the previous instance. This is almost always -a typographical error. Note that the earlier variable will still exist +(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. @@ -57,6 +57,12 @@ no useful value. See L. checksumming process loses information, and you can't go the other way. See L. +=item /%s/: Unrecognized escape \\%c passed through + +(W) You used a backslash-character combination which is not recognized +by Perl. This combination appears in an interpolated variable or a +C<'>-delimited regular expression. + =item %s (...) interpreted as function (W) You've run afoul of the rule that says that any list operator followed @@ -143,6 +149,18 @@ Perl yourself. instead of Perl. Check the #! line, or manually feed your script into Perl yourself. +=item (in cleanup) %s + +(W) This prefix usually indicates that a DESTROY() method raised +the indicated exception. Since destructors are usually called by +the system at arbitrary points during execution, and often a vast +number of times, the warning is issued only once for any number +of failures that would otherwise result in the same message being +repeated. + +Failure of user callbacks dispatched using the C flag +could also result in this warning. See L. + =item (Missing semicolon on previous line?) (S) This is an educated guess made in conjunction with the message "%s @@ -499,6 +517,10 @@ Something like this will reproduce the error: (F) You called C, but C is not a directory that you can chdir to, possibly because it doesn't exist. +=item Can't check filesystem of script "%s" + +(P) For some reason you can't check the filesystem of the script for nosuid. + =item Can't coerce %s to integer in %s (F) Certain types of SVs, in particular real symbol table entries @@ -697,6 +719,13 @@ lexical variable using "my". This is not allowed. If you want to localize a package variable of the same name, qualify it with the package name. +=item Can't localize pseudo-hash element + +(F) You said something like C{'key'}>, where $ar is +a reference to a pseudo-hash. That hasn't been implemented yet, but +you can get a similar effect by localizing the corresponding array +element directly -- C[$ar-E[0]{'key'}]>. + =item Can't locate auto/%s.al in @INC (F) A function (or method) was called in a package which allows autoload, @@ -871,6 +900,12 @@ and the variable had earlier been declared as a lexical variable. Either qualify the sort variable with the package name, or rename the lexical variable. +=item Bad evalled substitution pattern + +(F) You've used the /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 '}'. + =item Can't use %s for loop variable (F) Only a simple scalar variable may be used as a loop variable on a foreach. @@ -995,6 +1030,14 @@ for information on I.) (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. +=item Constant is not %s reference + +(F) A constant value (perhaps declared using the C pragma) +is being dereferenced, but it amounts to the wrong type of reference. The +message indicates the type of reference that was expected. This usually +indicates a syntax error in dereferencing the constant value. +See L and L. + =item Constant subroutine %s redefined (S) You redefined a subroutine which had previously been eligible for @@ -1089,6 +1132,11 @@ unlikely to be what you want. (F) An untrapped exception was raised while executing an END subroutine. The interpreter is immediately exited. +=item entering effective %s failed + +(F) While under the C pragma, switching the real and +effective uids or gids failed. + =item Error converting file specification %s (F) An error peculiar to VMS. Because Perl may have to deal with file @@ -1155,7 +1203,7 @@ a return, a goto, or a loop control statement. (W) You are blessing a reference to a zero length string. This has the effect of blessing the reference into the package main. This is usually not what you want. Consider providing a default target -package, e.g. bless($ref, $p or 'MyPackage'); +package, e.g. bless($ref, $p || 'MyPackage'); =item Fatal VMS error at %s, line %d @@ -1251,7 +1299,6 @@ Did you forget to check the return value of your socket() call? (S) A warning peculiar to VMS. The call to C underlying the C operator returned an invalid UIC. - =item Glob not terminated (F) The lexer saw a left angle bracket in a place where it was expecting @@ -1397,7 +1444,7 @@ architecture. On a 32-bit architecture the largest octal literal is (S) A warning peculiar to VMS. Perl keeps track of the number of times you've called C and C, to determine whether the current call to C should affect the current -script or a subprocess (see L). Somehow, this count +script or a subprocess (see L). Somehow, this count has become scrambled, so Perl is making a guess and treating this C as a request to terminate the Perl script and execute the specified command. @@ -1406,16 +1453,19 @@ and execute the specified command. (P) Something went badly wrong in the regular expression parser. -=item internal error: glob failed +=item glob failed (%s) -(P) Something went wrong with the external program(s) used for C -and C*.cE>. This may mean that your csh (C shell) is -broken. If so, you should change all of the csh-related variables in -config.sh: If you have tcsh, make the variables refer to it as if it -were csh (e.g. C); otherwise, make them all -empty (except that C should be C<'undef'>) so that Perl will -think csh is missing. In either case, after editing config.sh, run -C<./Configure -S> and rebuild Perl. +(W) Something went wrong with the external program(s) used for C +and C*.cE>. Usually, this means that you supplied a C +pattern that caused the external program to fail and exit with a nonzero +status. If the message indicates that the abnormal exit resulted in a +coredump, this may also mean that your csh (C shell) is broken. If so, +you should change all of the csh-related variables in config.sh: If you +have tcsh, make the variables refer to it as if it were csh (e.g. +C); otherwise, make them all empty (except that +C should be C<'undef'>) so that Perl will think csh is missing. +In either case, after editing config.sh, run C<./Configure -S> and +rebuild Perl. =item internal urp in regexp at /%s/ @@ -1470,6 +1520,11 @@ L. that name, not even if you count where you were called from. See L. +=item leaving effective %s failed + +(F) While under the C pragma, switching the real and +effective uids or gids failed. + =item listen() on closed fd (W) You tried to do a listen on a closed socket. Did you forget to check @@ -1501,6 +1556,11 @@ one line to the next. (F) While certain functions allow you to specify a filehandle or an "indirect object" before the argument list, this ain't one of them. +=item Missing command in piped open + +(W) You used the C or C +construction, but the command was missing or blank. + =item Missing operator before %s? (S) This is an educated guess made in conjunction with the message "%s @@ -1531,7 +1591,7 @@ backwards. =item Modification of non-creatable hash value attempted, subscript "%s" -(F) You tried to make a hash value spring into existence, and it couldn't +(P) You tried to make a hash value spring into existence, and it couldn't be created for some peculiar reason. =item Module name must be constant @@ -1696,6 +1756,14 @@ an attempt to close an unopened filehandle. (W) You specified a signal name as a subscript to %SIG that was not recognized. Say C in your shell to see the valid signal names on your system. +=item no UTC offset information; assuming local time is UTC + +(S) A warning peculiar to VMS. Per was unable to find the local +timezone offset, so it's assuming that local system time is equivalent +to UTC. If it's not, define the logical name F +to translate to the number of seconds which need to be added to UTC to +get local time. + =item Not a CODE reference (F) Perl was trying to evaluate a reference to a code value (that is, a @@ -2030,7 +2098,7 @@ anyway? See L. (F) The setuid emulator in suidperl decided you were up to no good. -=item pid %d not a child +=item pid %x not a child (W) A warning peculiar to VMS. Waitpid() was asked to wait for a process which isn't a subprocess of the current process. While this is fine from VMS' @@ -2194,14 +2262,6 @@ expression compiler gave it. (P) A "can't happen" error, because safemalloc() should have caught it earlier. -=item regexp too big - -(F) The current implementation of regular expressions uses shorts as -address offsets within a string. Unfortunately this means that if -the regular expression compiles to longer than 32767, it'll blow up. -Usually when you want a regular expression this big, there is a better -way to do it with multiple statements. See L. - =item Reversed %s= operator (W) You wrote your assignment operator backwards. The = must always @@ -2398,6 +2458,14 @@ there was a failure. You probably wanted to use system() instead, which does return. To suppress this warning, put the exec() in a block by itself. +=item Strange *+?{} on zero-length expression + +(W) You applied a regular expression quantifier in a place where it +makes no sense, such as on a zero-width assertion. +Try putting the quantifier inside the assertion instead. For example, +the way to match "abc" provided that it is followed by three +repetitions of "xyz" is C, not C. + =item Stub found while resolving method `%s' overloading `%s' in package `%s' (P) Overloading resolution over @ISA tree may be broken by importation stubs. @@ -2445,6 +2513,11 @@ of an assignment or as a subroutine argument for example). (F) Your Perl was compiled with B<-D>SETUID_SCRIPTS_ARE_SECURE_NOW, but a version of the setuid emulator somehow got run anyway. +=item switching effective %s is not implemented + +(F) While under the C pragma, we cannot switch the +real and effective uids or gids. + =item syntax error (F) Probably means you had a syntax error. Common reasons include: @@ -2472,10 +2545,12 @@ if the error went away. Sort of the cybernetic version of S<20 questions>. instead of Perl. Check the #! line, or manually feed your script into Perl yourself. -=item System V IPC is not implemented on this machine +=item System V %s is not implemented on this machine -(F) You tried to do something with a function beginning with "sem", "shm", -or "msg". See L, for example. +(F) You tried to do something with a function beginning with "sem", +"shm", or "msg" but that System V IPC is not implemented in your +machine. In some machines the functionality can exist but be +unconfigured. Consult your system support. =item Syswrite on closed filehandle @@ -2716,6 +2791,11 @@ an underbar into it. You might also declare it as a subroutine. in your Perl script (or eval). Perhaps you tried to run a compressed script, a binary program, or a directory as a Perl program. +=item Unrecognized escape \\%c passed through + +(W) You used a backslash-character combination which is not recognized +by Perl. + =item Unrecognized signal name "%s" (F) You specified a signal name to the kill() function that was not recognized. @@ -2762,18 +2842,6 @@ a term, so it's looking for the corresponding right angle bracket, and not finding it. Chances are you left some needed parentheses out earlier in the line, and you really meant a "less than". -=item Use of "$$" to mean "${$}" is deprecated - -(D) Perl versions before 5.004 misinterpreted any type marker followed -by "$" and a digit. For example, "$$0" was incorrectly taken to mean -"${$}0" instead of "${$0}". This bug is (mostly) fixed in Perl 5.004. - -However, the developers of Perl 5.004 could not fix this bug completely, -because at least two widely-used modules depend on the old meaning of -"$$0" in a string. So Perl 5.004 still interprets "$$" in the -old (broken) way inside strings; but it generates this message as a -warning. And in Perl 5.005, this special treatment will cease. - =item Use of $# is deprecated (D) This was an ill-advised attempt to emulate a poorly defined B feature.