X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperldiag.pod;h=122f5ea144c05125b120fe347260aee1694453ab;hb=55eda71149148d511e3e5da4f7c4e646dd445502;hp=abbdea7aa3cff756f2df0888614d1c187fe477c0;hpb=551e1d922a333f90a45a26904eb4d9882f7bd5d4;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perldiag.pod b/pod/perldiag.pod index abbdea7..122f5ea 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -16,7 +16,7 @@ desperation): (A) An alien error message (not generated by Perl). The majority of messages from the first three classifications above -(W, D & S) can be controlled using the C pragma. +(W, D & S) can be controlled using the C pragma. If a message can be controlled by the C pragma, its warning category is included with the classification letter in the description @@ -656,7 +656,7 @@ If you're getting this error from a here-document, you may have included unseen whitespace before or after your closing tag. A good programmer's editor will have a way to help you find these characters. -=item Can't find %s property definition %s +=item Can't find %s property definition %s (F) You may have tried to use C<\p> which means a Unicode property for example \p{Lu} is all uppercase letters. Escape the C<\p>, either @@ -759,7 +759,7 @@ directly -- C<< local $ar->[$ar->[0]{'key'}] >>. (F) You said something like C, which Perl can't currently handle, because when it goes to restore the old value of whatever $ref pointed to after the scope of the local() is finished, it can't be sure -that $ref will still be a reference. +that $ref will still be a reference. =item Can't locate %s @@ -896,7 +896,7 @@ or grep(). You can usually double the curlies to get the same effect though, because the inner curlies will be considered a block that loops once. See L. -=item Can't remove %s: %s, skipping file +=item Can't remove %s: %s, skipping file (S inplace) You requested an inplace edit without creating a backup file. Perl was unable to remove the original file to replace it with @@ -929,6 +929,14 @@ suidperl. temporary or readonly values) from a subroutine used as an lvalue. This is not allowed. +=item Can't return %s to lvalue scalar context + +(F) You tried to return a complete array or hash from an lvalue subroutine, +but you called the subroutine in a way that made Perl think you meant +to return only one value. You probably meant to write parentheses around +the call to the subroutine, which tell Perl that the call should be in +list context. + =item Can't return outside a subroutine (F) The return statement was executed in mainline code, that is, where @@ -1128,7 +1136,7 @@ workarounds. =item Copy method did not return a reference -(F) The method which overloads "=" is buggy. See +(F) The method which overloads "=" is buggy. See L. =item CORE::%s is not a keyword @@ -1171,13 +1179,13 @@ which case it indicates something else. (D deprecated) defined() is not usually useful on arrays because it checks for an undefined I value. If you want to see if the -array is empty, just use C for example. +array is empty, just use C for example. =item defined(%hash) is deprecated (D deprecated) defined() is not usually useful on hashes because it checks for an undefined I value. If you want to see if the hash -is empty, just use C for example. +is empty, just use C for example. =item Delimiter for here document is too long @@ -1672,7 +1680,7 @@ shows in the regular expression about where the problem was discovered. (W syntax) You've run afoul of the rule that says that any list operator followed by parentheses turns into a function, with all the list -operators arguments found inside the parentheses. See +operators arguments found inside the parentheses. See L. =item Invalid %s attribute: %s @@ -1907,7 +1915,7 @@ is aliased to a constant in the look I: $x = 1; foreach my $n ($x, 2) { $n *= 2; # modifies the $x, but fails on attempt to modify the 2 - } + } =item Modification of non-creatable array value attempted, %s @@ -2405,23 +2413,19 @@ reference. (P) We popped the context stack to an eval context, and then discovered it wasn't an eval context. -=item panic: do_match +=item panic: pp_match (P) The internal pp_match() routine was called with invalid operational data. -=item panic: do_split - -(P) Something terrible went wrong in setting up for the split. - =item panic: do_subst (P) The internal pp_subst() routine was called with invalid operational data. -=item panic: do_trans +=item panic: do_trans_%s -(P) The internal do_trans() routine was called with invalid operational +(P) The internal do_trans routines were called with invalid operational data. =item panic: frexp @@ -2513,6 +2517,10 @@ and freeing temporaries and lexicals from. (P) The foreach iterator got called in a non-loop context frame. +=item panic: pp_split + +(P) Something terrible went wrong in setting up for the split. + =item panic: realloc (P) Something requested a negative number of bytes of realloc. @@ -2547,7 +2555,7 @@ was string. =item panic: utf16_to_utf8: odd bytelen (P) Something tried to call utf16_to_utf8 with an odd (as opposed -to even) byte length. +to even) byte length. =item Parentheses missing around "%s" list @@ -2594,6 +2602,22 @@ the problem, however, you will get the same error message each time you run Perl. How to really fix the problem can be found in L section B. +=item perlio: argument list not closed for layer "%s" + +(S) When pushing a layer with arguments onto the Perl I/O system you forgot +the ) that closes the argument list. (Layers take care of transforming +data between external and internal representations.) Perl stopped parsing +the layer list at this point and did not attempt to push this layer. +If your program didn't explicitly request the failing operation, it may be +the result of the value of the environment variable PERLIO. + +=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. +If the previous attribute had a parenthesised parameter list, perhaps that +list was terminated too soon. + =item perlio: unknown layer "%s" (S) An attempt was made to push an unknown layer onto the Perl I/O @@ -2911,6 +2935,13 @@ as a list, you need to look into how references work, because Perl will not magically convert between scalars and lists for you. See L. +=item Scalars leaked: %d + +(P) Something went wrong in Perl's internal bookkeeping of scalars: +not all scalar variables were deallocated by the time Perl exited. +What this usually indicates is a memory leak, which is of course bad, +especially if the Perl program is intended to be long-running. + =item Script is not setuid/setgid in suidperl (F) Oddly, the suidperl program was invoked on a script without a setuid @@ -2976,7 +3007,7 @@ where the problem was discovered. See L. (F) You used a regular expression extension that doesn't make sense. The << HERE shows in the regular expression about -where the problem was discovered. +where the problem was discovered. See L. =item Sequence (?#... not terminated in regex m/%s/ @@ -3549,8 +3580,7 @@ bad switch on your behalf.) (W newline) A file operation was attempted on a filename, and that operation failed, PROBABLY because the filename contained a newline, -PROBABLY because you forgot to chop() or chomp() it off. See -L. +PROBABLY because you forgot to chomp() it off. See L. =item Unsupported directory function "%s" called @@ -3710,6 +3740,15 @@ old way has bad side effects. (D deprecated) This was an ill-advised attempt to emulate a poorly defined B feature. Use an explicit printf() or sprintf() instead. +=item Use of reference "%s" in array index + +(W) You tried to use a reference as an array index; this probably +isn't what you mean, because references tend to be huge numbers which +take you out of memory, and so usually indicates programmer error. + +If you really do mean it, explicitly numify your reference, like so: +C<$array[0+$ref]> + =item Use of reserved word "%s" is deprecated (D deprecated) The indicated bareword is a reserved word. Future