X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperldiag.pod;h=d5e44c794e7e8940ba507bba3c7b18d89a7ad17f;hb=2628b4e04e549c099db13c6de70af2f726568985;hp=54b42eb8e7bb75783ee31076990d374930969ba7;hpb=4df3f177ec6976dd82207a4ed033ec8c90400146;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 54b42eb..d5e44c7 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -1076,19 +1076,13 @@ redefined subroutine while the old routine is running. Go figure. (F) You tried to unshift an "unreal" array that can't be unshifted, such as the main Perl stack. -=item Can't upgrade that kind of scalar +=item Can't upgrade %s (%d) to %d (P) The internal sv_upgrade routine adds "members" to an SV, making it into a more specialized kind of SV. The top several SV types are so specialized, however, that they cannot be interconverted. This message indicates that such a conversion was attempted. -=item Can't upgrade to undef - -(P) The undefined SV is the bottom of the totem pole, in the scheme of -upgradability. Upgrading to undef indicates an error in the code -calling sv_upgrade. - =item Can't use anonymous symbol table for method lookup (F) The internal routine that does method lookup was handed a symbol @@ -1271,6 +1265,11 @@ uses the character values modulus 256 instead, as if you had provided: (W unopened) You tried to close a filehandle that was never opened. +=item closedir() attempted on invalid dirhandle %s + +(W io) The dirhandle you tried to close is either closed or not really +a dirhandle. Check your control flow. + =item Code missing after '/' (F) You had a (sub-)template that ends with a '/'. There must be another @@ -1335,6 +1334,14 @@ specified in the C<\N{...}> escape. Perhaps you forgot to load the corresponding C or C pragma? See L and L. +=item Constant(%s)%s: %s in regex; marked by <-- HERE in m/%s/ + +(F) The parser found inconsistencies while attempting to find +the character name specified in the C<\N{...}> escape. Perhaps you +forgot to load the corresponding C pragma? +See L. + + =item Constant is not %s reference (F) A constant value (perhaps declared using the C pragma) @@ -1423,13 +1430,18 @@ conditional. Some people have exploited this bug to achieve a kind of static variable. Since we intend to fix this bug, we don't want people relying on this behavior. You can achieve a similar static effect by declaring the variable in a separate block outside the function, eg - + sub f { my $x if 0; return $x++ } becomes { my $x; sub f { return $x++ } } +Beginning with perl 5.9.4, you can also use C variables to +have lexicals that are initialized only once (see L): + + sub f { state $x; return $x++ } + =item DESTROY created new reference to dead object '%s' (F) A DESTROY() method created a new reference to the object which is @@ -1507,6 +1519,10 @@ subroutine or package before the current location. You can use an empty (W misc) You used the obsolescent C built-in function, without fully qualifying it as C. Maybe it's a typo. See L. +=item dump is not supported + +(F) Your machine doesn't support dump/undump. + =item Duplicate free() ignored (S malloc) An internal routine called free() on something that had @@ -1833,6 +1849,13 @@ about 250 characters for simple names, and somewhat more for compound names (like C<$A::B>). You've exceeded Perl's limits. Future versions of Perl are likely to eliminate these arbitrary limitations. +=item Ignoring %s in character class in regex; marked by <-- HERE in m/%s/ + +(W) Named unicode character escapes (\N{...}) may return multi-char +or zero length sequences. When such an escape is used in a character class +its behaviour is not well defined. Check that the correct escape has +been used, and the correct charname handler is in scope. + =item Illegal binary digit %s (F) You used a digit other than 0 or 1 in a binary number. @@ -1975,8 +1998,8 @@ operations. =item Integer overflow in format string for %s -(F) The indexes and widths specified in the format string of printf() -or sprintf() are too large. The numbers must not overflow the size of +(F) The indexes and widths specified in the format string of C +or C are too large. The numbers must not overflow the size of integers for your architecture. =item Integer overflow in version @@ -2741,10 +2764,13 @@ which is odd, because hashes come in key/value pairs. =item Offset outside string -(F) You tried to do a read/write/send/recv operation with an offset -pointing outside the buffer. This is difficult to imagine. The sole -exception to this is that Cing past the buffer will extend -the buffer and zero pad the new area. +(F, W layer) You tried to do a read/write/send/recv/seek operation +with an offset pointing outside the buffer. This is difficult to +imagine. The sole exceptions to this are that zero padding will +take place when going past the end of the string when either +Cing a file, or when seeking past the end of a scalar opened +for I/O (in anticipation of future reads and to imitate the behaviour +with real files). =item %s() on unopened %s @@ -2918,6 +2944,11 @@ data. (P) The internal do_trans routines were called with invalid operational data. +=item panic: fold_constants JMPENV_PUSH returned %d + +(P) While attempting folding constants an exception other than an C +failure was caught. + =item panic: frexp (P) The library function frexp() failed, making printf("%f") impossible. @@ -3353,6 +3384,11 @@ are outside the range which can be represented by integers internally. One possible workaround is to force Perl to use magical string increment by prepending "0" to your numbers. +=item readdir() attempted on invalid dirhandle %s + +(W io) The dirhandle you're reading from is either closed or not really +a dirhandle. Check your control flow. + =item readline() on closed filehandle %s (W closed) The filehandle you're reading from got itself closed sometime @@ -3445,6 +3481,11 @@ terminates. You might use ^# instead. See L. (W syntax) You wrote your assignment operator backwards. The = must always comes last, to avoid ambiguity with subsequent unary operators. +=item rewinddir() attempted on invalid dirhandle %s + +(W io) The dirhandle you tried to do a rewinddir() on is either closed or not +really a dirhandle. Check your control flow. + =item Runaway format (F) Your format contained the ~~ repeat-until-blank sequence, but it @@ -3521,6 +3562,11 @@ the conditional expression, i.e. C<(foo) ? 0 : 1>. (W unopened) You tried to use the seek() or sysseek() function on a filehandle that was either never opened or has since been closed. +=item seekdir() attempted on invalid dirhandle %s + +(W io) The dirhandle you are doing a seekdir() on is either closed or not +really a dirhandle. Check your control flow. + =item select not implemented (F) This machine doesn't implement the select() system call. @@ -3717,6 +3763,16 @@ L. iterate more times than there are characters of input, which is what happened.) See L. +=item State variable %s will be reinitialized + +(W misc) You're declaring a C variable inside a list. The list +assignment will be treated by perl as a regular assignment, which means +that the C variable will be reinitialized each time the statement +is run. The solution to have it initialized only once is to write the +assignment on its own line, as in: + + state $var = 42; + =item Statement unlikely to be reached (W exec) You did an exec() with some statement after it other than a @@ -3750,7 +3806,7 @@ C may break this. (P) The substitution was looping infinitely. (Obviously, a substitution shouldn't iterate more times than there are characters of input, which is what happened.) See the discussion of substitution in -L. +L. =item Substitution pattern not terminated @@ -3878,6 +3934,11 @@ for Perl to reach. Perl is doing you a favor by refusing. (W unopened) You tried to use the tell() function on a filehandle that was either never opened or has since been closed. +=item telldir() attempted on invalid dirhandle %s + +(W io) The dirhandle you tried to telldir() is either closed or not really +a dirhandle. Check your control flow. + =item That use of $[ is unsupported (F) Assignment to C<$[> is now strictly circumscribed, and interpreted @@ -3915,8 +3976,7 @@ instead. =item The 'unique' attribute may only be applied to 'our' variables -(F) Currently this attribute is not supported on C or C -declarations. See L. +(F) This attribute was never supported on C or C declarations. =item This Perl can't reset CRTL environ elements (%s) @@ -4213,23 +4273,24 @@ 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 /%s/: Unrecognized escape \\%c in character class passed through +=item Unrecognized escape \\%c in character class passed through in regex; marked by <-- HERE in m/%s/ (W regexp) You used a backslash-character combination which is not recognized by Perl inside character classes. The character was understood literally. +The <-- HERE shows in the regular expression about where the +escape was discovered. =item Unrecognized escape \\%c passed through (W misc) You used a backslash-character combination which is not -recognized by Perl. +recognized by Perl. The character was understood literally. =item Unrecognized escape \\%c passed through in regex; marked by <-- HERE in m/%s/ (W regexp) 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. The character was understood -literally. The <-- HERE shows in the regular expression about where the +recognized by Perl. The character was understood literally. +The <-- HERE shows in the regular expression about where the escape was discovered. =item Unrecognized signal name "%s" @@ -4686,6 +4747,11 @@ are automatically rebound to the current values of such variables. its equivalent C block found an internal inconsistency with the version number. +=item Version string '%s' contains invalid data; ignoring: '%s' + +(W misc) The version string contains invalid characters at the end, which +are being ignored. + =item v-string in use/require is non-portable (W portable) The use of v-strings is non-portable to older, pre-5.6, Perls.