X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperldiag.pod;h=edccac13485ad97a324dd361ef3462d97443ed5b;hb=8162142bfe8ad55439ff878b28c85e654d9a67d3;hp=1dbb3e45815989c47d19429bd6ca92b797870951;hpb=b1fc363696b1a308e6bce75eb292bacc8f2c9833;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 1dbb3e4..edccac1 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -8,7 +8,7 @@ These messages are classified as follows (listed in increasing order of desperation): (W) A warning (optional). - (D) A deprecation (optional). + (D) A deprecation (enabled by default). (S) A severe warning (enabled by default). (F) A fatal error (trappable). (P) An internal error you should never see (trappable). @@ -115,8 +115,8 @@ which 'splits' output into two streams, such as (W misc) The pattern match (C), substitution (C), and transliteration (C) operators work on scalar values. If you apply one of them to an array or a hash, it will convert the array or hash to -a scalar value -- the length of an array, or the population info of a -hash -- and then work on that scalar value. This is probably not what +a scalar value (the length of an array, or the population info of a +hash) and then work on that scalar value. This is probably not what you meant to do. See L and L for alternatives. @@ -316,11 +316,11 @@ release of Perl 5. =item Attribute "unique" is deprecated (D deprecated) You have used the attributes pragam to modify the "unique" -attribute on a array, hash or scalar reference. The :unique attribute is has -had no no effect since Perl 5.8.8, and will be removed in the next major +attribute on an array, hash or scalar reference. The :unique attribute has +had no effect since Perl 5.8.8, and will be removed in the next major release of Perl 5. -=item Bad arg length for %s, is %d, should be %s +=item Bad arg length for %s, is %d, should be %d (F) You passed a buffer of the wrong size to one of msgctl(), semctl() or shmctl(). In C parlance, the correct sizes are, respectively, @@ -373,6 +373,11 @@ is not the same as $var = 'myvar'; $sym = "mypack::$var"; +=item Bad plugin affecting keyword '%s' + +(F) An extension using the keyword plugin mechanism violated the +plugin API. + =item Bad realloc() ignored (S malloc) An internal routine called realloc() on something that had @@ -521,6 +526,11 @@ from that type of reference to a typeglob. (P) Perl detected an attempt to copy a value to an internal type that cannot be directly assigned not. +=item Cannot find encoding "%s" + +(S io) You tried to apply an encoding that did not exist to a filehandle, +either with open() or binmode(). + =item Can only compress unsigned integers in pack (F) An argument to pack("w",...) was not an integer. The BER compressed @@ -712,9 +722,9 @@ is no builtin with the name C. =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 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 or C prefix? +could not be found. Maybe you misspelled the name of the property? +See L +for a complete list of available properties. =item Can't find label %s @@ -747,8 +757,10 @@ editor will have a way to help you find these characters. =item Can't find Unicode property definition "%s" (F) You may have tried to use C<\p> which means a Unicode property (for -example C<\p{Lu}> is all uppercase letters). If you did mean to use a -Unicode property, see L for the list of known properties. +example C<\p{Lu}> matches all uppercase letters). If you did mean to use a +Unicode property, see +L +for a complete list of available properties. If you didn't mean to use a Unicode property, escape the C<\p>, either by C<\\p> (just the C<\p>) or by C<\Q\p> (the rest of the string, until possible C<\E>). @@ -830,6 +842,12 @@ processes, Perl has reset the signal to its default value. This situation typically indicates that the parent program under which Perl may be running (e.g. cron) is being very careless. +=item Can't kill a non-numeric process ID + +(F) Process identifiers must be (signed) integers. It is a fatal error to +attempt to kill() an undefined, empty-string or otherwise non-numeric +process identifier. + =item Can't "last" outside a loop block (F) A "last" statement was executed to break out of the current block, @@ -1032,7 +1050,7 @@ probably because you don't have write permission to the directory. (P) An error peculiar to VMS. Perl thought stdin was a pipe, and tried to reopen it to accept binary data. Alas, it failed. -=item Can't resolve method `%s' overloading `%s' in package `%s' +=item Can't resolve method "%s" overloading "%s" in package "%s" (F|P) Error resolving overloading specified by a method name (as opposed to a subroutine reference): no such method callable via the package. If @@ -1408,6 +1426,9 @@ L. infinite recursion, unless you're writing strange benchmark programs, in which case it indicates something else. +This threshold can be changed from 100, by recompiling the F binary, +setting the C pre-processor macro C to the desired value. + =item defined(@array) is deprecated (D deprecated) defined() is not usually useful on arrays because it @@ -1431,6 +1452,14 @@ there are neither package declarations nor a C<$VERSION>. long for Perl to handle. You have to be seriously twisted to write code that triggers this error. +=item Deprecated character(s) in \\N{...} starting at '%s' + +(D deprecated) Just about anything is legal for the C<...> in C<\N{...}>. +But starting in 5.12, non-reasonable ones that don't look like names are +deprecated. A reasonable name begins with an alphabetic character and +continues with any combination of alphanumerics, dashes, spaces, parentheses or +colons. + =item Deprecated use of my() in false conditional (D deprecated) You used a declaration similar to C. @@ -1471,8 +1500,8 @@ do. See L. =item (Did you mean &%s instead?) -(W) You probably referred to an imported subroutine &FOO as $FOO or some -such. +(W misc) You probably referred to an imported subroutine &FOO as $FOO or +some such. =item (Did you mean "local" instead of "our"?) @@ -1615,7 +1644,7 @@ variable and glob that. (F) The C function is not implemented in MacPerl. See L. -=item Execution of %s aborted due to compilation errors +=item Execution of %s aborted due to compilation errors. (F) The final summary message when a Perl compilation fails. @@ -1823,6 +1852,20 @@ 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 gmtime(%.0f) too large + +(W overflow) You called C with an number that was larger than +it can reliably handle and C probably returned the wrong +date. This warning is also triggered with nan (the special +not-a-number value). + +=item gmtime(%.0f) too small + +(W overflow) You called C with an number that was smaller than +it can reliably handle and C probably returned the wrong +date. This warning is also triggered with nan (the special +not-a-number value). + =item Got an error from DosAllocMem (P) An error peculiar to OS/2. Most probably you're using an obsolete @@ -1839,7 +1882,7 @@ unspecified destination. See L. supposed to follow something: a template character or a ()-group. See L. -=item %s had compilation errors +=item %s had compilation errors. (F) The final summary message when a C fails. @@ -1872,10 +1915,10 @@ 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/ +=item Ignoring zero length \N{} in character class -(W) Named Unicode character escapes (\N{...}) may return multi-char -or zero length sequences. When such an escape is used in a character class +(W) Named Unicode character escapes (\N{...}) may return a +zero length sequence. 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. @@ -1899,8 +1942,8 @@ to your Perl administrator. =item Illegal character in prototype for %s : %s -(W syntax) An illegal character was found in a prototype declaration. Legal -characters in prototypes are $, @, %, *, ;, [, ], &, and \. +(W illegalproto) An illegal character was found in a prototype declaration. +Legal characters in prototypes are $, @, %, *, ;, [, ], &, and \. =item Illegal declaration of anonymous subroutine @@ -1942,7 +1985,7 @@ two from 1 to 32 (or 64, if your platform supports that). (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 +=item Illegal switch in PERL5OPT: -%c (X) The PERL5OPT environment variable may only be used to set the following switches: B<-[CDIMUdmtw]>. @@ -2164,7 +2207,7 @@ strange for a machine that supports C. (W unopened) You tried ioctl() on a filehandle that was never opened. Check you control flow and number of arguments. -=item IO layers (like "%s") unavailable +=item IO layers (like '%s') unavailable (F) Your Perl has not been configured to have PerlIO, and therefore you cannot use IO layers. To have PerlIO Perl must be configured @@ -2177,13 +2220,17 @@ neither as a system call or an ioctl call (SIOCATMARK). =item $* is no longer supported -(S deprecated, syntax) The special variable C<$*>, deprecated in older perls, has -been removed as of 5.9.0 and is no longer supported. You should use the -C and C regexp modifiers instead. +(D deprecated, syntax) The special variable C<$*>, deprecated in older perls, has +been removed as of 5.9.0 and is no longer supported. In previous versions of perl the use of +C<$*> enabled or disabled multi-line matching within a string. + +Instead of using C<$*> you should use the C (and maybe C) regexp +modifiers. (In older versions: when C<$*> was set to a true value then all regular +expressions behaved as if they were written using C.) =item $# is no longer supported -(S deprecated, syntax) The special variable C<$#>, deprecated in older perls, has +(D deprecated, syntax) The special variable C<$#>, deprecated in older perls, has been removed as of 5.9.3 and is no longer supported. You should use the printf/sprintf functions instead. @@ -2231,12 +2278,40 @@ effective uids or gids failed. length/code combination tried to obtain more data. This results in an undefined value for the length. See L. +=item Lexing code attempted to stuff non-Latin-1 character into Latin-1 input + +(F) An extension is attempting to insert text into the current parse +(using L or similar), but +tried to insert a character that couldn't be part of the current input. +This is an inherent pitfall of the stuffing mechanism, and one of the +reasons to avoid it. Where it is necessary to stuff, stuffing only +plain ASCII is recommended. + +=item Lexing code internal error (%s) + +(F) Lexing code supplied by an extension violated the lexer's API in a +detectable way. + =item listen() on closed socket %s (W closed) You tried to do a listen on a closed socket. Did you forget to check the return value of your socket() call? See L. +=item localtime(%.0f) too large + +(W overflow) You called C with an number that was larger +than it can reliably handle and C probably returned the +wrong date. This warning is also triggered with nan (the special +not-a-number value). + +=item localtime(%.0f) too small + +(W overflow) You called C with an number that was smaller +than it can reliably handle and C probably returned the +wrong date. This warning is also triggered with nan (the special +not-a-number value). + =item Lookbehind longer than %d not implemented in regex m/%s/ (F) There is currently a limit on the length of string which lookbehind can @@ -2257,6 +2332,14 @@ You may wish to switch to using L explicitly. by that? lstat() makes sense only on filenames. (Perl did a fstat() instead on the filehandle.) +=item lvalue attribute ignored after the subroutine has been defined + +(W misc) Making a subroutine an lvalue subroutine after it has been defined +by declaring the subroutine with a lvalue attribute is not +possible. To make the the subroutine a lvalue subroutine add the +lvalue attribute to the definition, or put the the declaration before +the definition. + =item Lvalue subs returning %s not implemented yet (F) Due to limitations in the current implementation, array and hash @@ -2312,9 +2395,13 @@ See also L. =item Malformed UTF-16 surrogate -Perl thought it was reading UTF-16 encoded character data but while +(F) Perl thought it was reading UTF-16 encoded character data but while doing it Perl met a malformed Unicode surrogate. +=item Malformed UTF-8 returned by \N + +(F) The charnames handler returned malformed UTF-8. + =item Malformed UTF-8 string in pack (F) You tried to pack something that didn't comply with UTF-8 encoding @@ -2330,9 +2417,9 @@ rules and perl was unable to guess how to make more progress. (F) You tried to unpack something that didn't comply with UTF-8 encoding rules and perl was unable to guess how to make more progress. -=item Maximal count of pending signals (%s) exceeded +=item Maximal count of pending signals (%d) exceeded -(F) Perl aborted due to a too important number of signals pending. This +(F) Perl aborted due to a too high number of signals pending. This usually indicates that your operating system tried to deliver signals too fast (with a very high priority), starving the perl process from resources it would need to reach a point where it can process signals @@ -2377,15 +2464,23 @@ ended earlier on the current line. (W syntax) An underscore (underbar) in a numeric constant did not separate two digits. +=item Missing argument in %s + +(W uninitialized) A printf-type format required more arguments than were +supplied. + =item Missing argument to -%c (F) The argument to the indicated command line switch must follow immediately after the switch, without intervening spaces. -=item Missing %sbrace%s on \N{} +=item Missing braces on \N{} (F) Wrong syntax of character name literal C<\N{charname}> within -double-quotish context. +double-quotish context. This can also happen when there is a space (or +comment) between the C<\N> and the C<{> in a regex with the C modifier. +This modifier does not change the requirement that the brace immediately follow +the C<\N>. =item Missing comma after first argument to %s function @@ -2421,7 +2516,34 @@ can vary from one line to the next. =item Missing right brace on %s -(F) Missing right brace in C<\p{...}> or C<\P{...}>. +(F) Missing right brace in C<\x{...}>, C<\p{...}>, C<\P{...}>, or C<\N{...}>. + +=item Missing right brace on \\N{} or unescaped left brace after \\N + +(F) +C<\N> has two meanings. + +The traditional one has it followed by a name enclosed +in braces, meaning the character (or sequence of characters) given by that name. +Thus C<\N{ASTERISK}> is another way of writing C<*>, valid in both +double-quoted strings and regular expression patterns. In patterns, it doesn't +have the meaning an unescaped C<*> does. + +Starting in Perl 5.12.0, C<\N> also can have an additional meaning (only) in +patterns, namely to match a non-newline character. (This is short for +C<[^\n]>, and like C<.> but is not affected by the C regex modifier.) + +This can lead to some ambiguities. When C<\N> is not followed immediately by a +left brace, Perl assumes the C<[^\n]> meaning. Also, if +the braces form a valid quantifier such as C<\N{3}> or C<\N{5,}>, Perl assumes +that this means to match the given quantity of non-newlines (in these examples, +3; and 5 or more, respectively). In all other case, where there is a C<\N{> +and a matching C<}>, Perl assumes that a character name is desired. + +However, if there is no matching C<}>, Perl doesn't know if it was mistakenly +omitted, or if C<[^\n]{> was desired, and +raises this error. If you meant the former, add the right brace; if you meant +the latter, escape the brace with a backslash, like so: C<\N\{> =item Missing right curly or square bracket @@ -2475,7 +2597,7 @@ couldn't be created for some peculiar reason. you omitted the name of the module. Consult L for full details about C<-M> and C<-m>. -=item More than one argument to open +=item More than one argument to '%s' open (F) The C function has been asked to open multiple files. This can happen if you are trying to open a pipe to a command that takes a @@ -2508,6 +2630,42 @@ that yet. sense to try to declare one with a package qualifier on the front. Use local() if you want to localize a package variable. +=item \\N in a character class must be a named character: \\N{...} + +(F) The new (5.12) meaning of C<\N> as C<[^\n]> is not valid in a bracketed +character class, for the same reason that C<.> in a character class loses its +specialness: it matches almost everything, which is probably not what you want. + +=item \\N{NAME} must be resolved by the lexer + +(F) When compiling a regex pattern, an unresolved named character or sequence +was encountered. This can happen in any of several ways that bypass the lexer, +such as using single-quotish context, or an extra backslash in double quotish: + + $re = '\N{SPACE}'; # Wrong! + $re = "\\N{SPACE}"; # Wrong! + /$re/; + +Instead, use double-quotes with a single backslash: + + $re = "\N{SPACE}"; # ok + /$re/; + +The lexer can be bypassed as well by creating the pattern from smaller +components: + + $re = '\N'; + /${re}{SPACE}/; # Wrong! + +It's not a good idea to split a construct in the middle like this, and it +doesn't work here. Instead use the solution above. + +Finally, the message also can happen under the C regex modifier when the +C<\N> is separated by spaces from the C<{>, in which case, remove the spaces. + + /\N {SPACE}/x; # Wrong! + /\N{SPACE}/x; # ok + =item Name "%s::%s" used only once: possible typo (W once) Typographical errors often show up as unique variable names. @@ -2520,6 +2678,12 @@ NOTE: This warning detects symbols that have been used only once so $c, @c, the same; if a program uses $c only once but also uses any of the others it will not trigger this warning. +=item Invalid hexadecimal number in \\N{U+...} + +(F) The character constant represented by C<...> is not a valid hexadecimal +number. Either it is empty, or you tried to use a character other than 0 - 9 +or A - F, a - f in a hexadecimal number. + =item Negative '/' count in unpack (F) The length count obtained from a length/code unpack operation was @@ -2986,6 +3150,17 @@ the string being unpacked. See L. the string being unpacked. The string being unpacked was also invalid UTF-8. See L. +=item Overloaded dereference did not return a reference + +(F) An object with an overloaded dereference operator was dereferenced, +but the overloaded operation did not return a reference. See +L. + +=item Overloaded qr did not return a REGEXP + +(F) An object with a C overload was used as part of a match, but the +overloaded operation didn't return a compiled regexp. See L. + =item %s package attribute may clash with future reserved word: %s (W reserved) A lowercase attribute name was used that had a @@ -3202,6 +3377,11 @@ at run time. (P) Something tried to call utf16_to_utf8 with an odd (as opposed to even) byte length. +=item panic: utf16_to_utf8_reversed: odd bytelen + +(P) Something tried to call utf16_to_utf8_reversed with an odd (as opposed +to even) byte length. + =item panic: yylex (P) The lexer got into a bad state while processing a case modifier. @@ -3246,6 +3426,13 @@ so it was not possible to set up some or all fixed-width byte-order conversion functions. This is only a problem when you're using the '<' or '>' modifiers in (un)pack templates. See L. +=item Perl_pmflag() is deprecated, and will be removed from the XS API + +(D deprecated) XS code called the C function C. This was part of +Perl's listed public API for extending or embedding the perl interpreter. It has +now been removed from the public API, and will be removed in a future release, +hence XS code should be re-written not to use it. + =item Perl %s required--this is only version %s, stopped (F) The module in question uses features of a version of Perl more @@ -3457,7 +3644,7 @@ in L. =item Prototype after '%c' for %s : %s -(W syntax) A character follows % or @ in a prototype. This is useless, +(W illegalproto) A character follows % or @ in a prototype. This is useless, since % and @ gobble the rest of the subroutine arguments. =item Prototype mismatch: %s vs %s @@ -3644,14 +3831,6 @@ always comes last, to avoid ambiguity with subsequent unary operators. (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 -produced 200 lines at once, and the 200th line looked exactly like the -199th line. Apparently you didn't arrange for the arguments to exhaust -themselves, either by using ^ instead of @ (for scalar variables), or by -shifting or popping (for array variables). See L. - =item Scalars leaked: %d (P) Something went wrong in Perl's internal bookkeeping of scalars: @@ -3902,12 +4081,6 @@ the smart match. (F) An ancient error message that almost nobody ever runs into anymore. But before sort was a keyword, people sometimes used it as a filehandle. -=item Sort subroutine didn't return a numeric value - -(F) A sort comparison routine must return a number. You probably blew -it by not using C<< <=> >> or C, or by not using them correctly. -See L. - =item Sort subroutine didn't return single value (F) A sort comparison subroutine may not return a list value with more @@ -3940,7 +4113,7 @@ a block by itself. (W unopened) You tried to use the stat() function on a filehandle that was either never opened or has since been closed. -=item Stub found while resolving method "%s" overloading "%s" +=item Stub found while resolving method "%s" overloading "%s" in package "%s" (P) Overloading resolution over @ISA tree may be broken by importation stubs. Stubs should never be implicitly created, but explicit calls to @@ -4151,18 +4324,18 @@ suspect you're not running on Unix. =item "-T" is on the #! line, it must also be used on the command line (X) The #! line (or local equivalent) in a Perl script contains the -B<-T> option, but Perl was not invoked with B<-T> in its command line. +B<-T> option (or the B<-t> option), but Perl was not invoked with B<-T> in its command line. This is an error because, by the time Perl discovers a B<-T> in a script, it's too late to properly taint everything from the environment. So Perl gives up. If the Perl script is being executed as a command using the #! mechanism (or its local equivalent), this error can usually be fixed by -editing the #! line so that the B<-T> option is a part of Perl's first -argument: e.g. change C to C. +editing the #! line so that the B<-%c> option is a part of Perl's first +argument: e.g. change C to C. If the Perl script is being executed as C, then the -B<-T> option must appear on the command line: C. +B<-%c> option must appear on the command line: C. =item To%s: illegal mapping '%s' @@ -4183,8 +4356,15 @@ system call to call, silly dilly. =item Too late for "-%s" option (X) The #! line (or local equivalent) in a Perl script contains the -B<-M>, B<-m> or B<-C> option. This is an error because those options -are not intended for use inside scripts. Use the C pragma instead. +B<-M>, B<-m> or B<-C> option. + +In the case of B<-M> and B<-m>, this is an error because those options are +not intended for use inside scripts. Use the C pragma instead. + +The B<-C> option only works if it is specified on the command line as well +(with the same sequence of letters or numbers following). Either specify +this option on the command line, or, if your system supports it, make your +script executable and run it directly instead of passing it to perl. =item Too late to run %s block @@ -4320,11 +4500,16 @@ Check the #! line, or manually feed your script into Perl yourself. (F) The unexec() routine failed for some reason. See your local FSF representative, who probably put it there in the first place. -=item Unicode character %s is illegal +=item Unicode non-character %s is illegal for interchange -(W utf8) Certain Unicode characters have been designated off-limits by -the Unicode standard and should not be generated. If you really know -what you are doing you can turn off this warning by C. +(W utf8) Certain codepoints, such as U+FFFE and U+FFFF, are defined by the +Unicode standard to be non-characters. Those are legal codepoints, but are +reserved for internal use; so, applications shouldn't attempt to exchange +them. In some cases, this message is also given if you use a codepoint that +isn't in Unicode--that is it is above the legal maximum of U+10FFFF. These +aren't legal at all in Unicode, so they are illegal for interchange, but can be +used internally in a Perl program. If you know what you are doing you can turn +off this warning by C. =item Unknown BYTEORDER @@ -4433,19 +4618,21 @@ to run a compressed script, a binary program, or a directory as a Perl program. (W regexp) You used a backslash-character combination which is not recognized by Perl inside character classes. The character was -understood literally. +understood literally, but this may change in a future version of Perl. 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. The character was understood literally. +recognized by Perl. The character was understood literally, but this may +change in a future version of Perl. =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. The character was understood literally. +recognized by Perl. The character was understood literally, but this may +change in a future version of Perl. The <-- HERE shows in the regular expression about where the escape was discovered. @@ -4664,12 +4851,12 @@ is deprecated. See L. =item Use of bare << to mean <<"" is deprecated -(D deprecated, W syntax) You are now encouraged to use the explicitly quoted +(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 comma-less variable list is deprecated -(D deprecated, W syntax) The values you give to a format should be +(D deprecated) The values you give to a format should be separated by commas, not just aligned on a line. =item Use of chdir('') or chdir(undef) as chdir() deprecated @@ -4693,6 +4880,14 @@ modifier is not presently meaningful in substitutions. use the /g modifier. Currently, /c is meaningful only when /g is used. (This may change in the future.) +=item Use of := for an empty attribute list is deprecated + +(D deprecated) The construction C currently +parses correctly in perl, being equivalent to C +(applying an empty attribute list to C<$x>). This useless +construct is now deprecated, so C<:=> can be reclaimed as a new +operator in the future. + =item Use of freed value in iteration (F) Perhaps you modified the iterated array within the loop? @@ -4717,11 +4912,10 @@ to access the filehandle slot within a typeglob. operator. Since C always tries to match the pattern repeatedly, the C has no effect. -=item Use of implicit split to @_ is deprecated +=item Use of "goto" to jump into a construct is deprecated -(D deprecated, W syntax) It makes a lot of work for the compiler when you -clobber a subroutine's argument list, so it's better if you assign the results -of a split() explicitly to an array (or list). +(D deprecated) Using C to jump from an outer scope into an inner +scope is deprecated and should be avoided. =item Use of inherited AUTOLOAD for non-method %s() is deprecated @@ -4836,14 +5030,28 @@ 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 Using just the first character returned by \N{} in character class + +(W) A charnames handler may return a sequence of more than one character. +Currently all but the first one are discarded when used in a regular +expression pattern bracketed character class. + +=item Using just the first characters returned by \N{} + +(W) A charnames handler may return a sequence of characters. There is a finite +limit as to the number of characters that can be used, which this sequence +exceeded. In the message, the characters in the sequence are separated by +dots, and each is shown by its ordinal in hex. Anything to the left of the +C was retained; anything to the right was discarded. + =item UTF-16 surrogate %s -(W utf8) You tried to generate half of an UTF-16 surrogate by +(W utf8) You tried to generate half of a UTF-16 surrogate by requesting a Unicode character between the code points 0xD800 and 0xDFFF (inclusive). That range is reserved exclusively for the use of UTF-16 encoding (by having two 16-bit UCS-2 characters); but Perl encodes its characters in UTF-8, so what you got is a very illegal -character. If you really know what you are doing you can turn off +character. If you really really know what you are doing you can turn off this warning by C. =item Value of %s can be "0"; test with defined() @@ -4894,8 +5102,8 @@ executed, so its $a is not available for capture. =item Variable "%s" is not imported%s -(F) While "use strict" in effect, you referred to a global variable that -you apparently thought was imported from another module, because +(W misc) With "use strict" in effect, you referred to a global variable +that you apparently thought was imported from another module, because something else of the same name (usually a subroutine) is exported by that module. It usually means you put the wrong funny character on the front of your variable.