1=head1 NAME 2 3perldiag - various Perl diagnostics 4 5=head1 DESCRIPTION 6 7These messages are classified as follows (listed in increasing order of 8desperation): 9 10 (W) A warning (optional). 11 (D) A deprecation (enabled by default). 12 (S) A severe warning (enabled by default). 13 (F) A fatal error (trappable). 14 (P) An internal error you should never see (trappable). 15 (X) A very fatal error (nontrappable). 16 (A) An alien error message (not generated by Perl). 17 18The majority of messages from the first three classifications above 19(W, D & S) can be controlled using the C<warnings> pragma. 20 21If a message can be controlled by the C<warnings> pragma, its warning 22category is included with the classification letter in the description 23below. E.g. C<(W closed)> means a warning in the C<closed> category. 24 25Optional warnings are enabled by using the C<warnings> pragma or the B<-w> 26and B<-W> switches. Warnings may be captured by setting C<$SIG{__WARN__}> 27to a reference to a routine that will be called on each warning instead 28of printing it. See L<perlvar>. 29 30Severe warnings are always enabled, unless they are explicitly disabled 31with the C<warnings> pragma or the B<-X> switch. 32 33Trappable errors may be trapped using the eval operator. See 34L<perlfunc/eval>. In almost all cases, warnings may be selectively 35disabled or promoted to fatal errors using the C<warnings> pragma. 36See L<warnings>. 37 38The messages are in alphabetical order, without regard to upper or 39lower-case. Some of these messages are generic. Spots that vary are 40denoted with a %s or other printf-style escape. These escapes are 41ignored by the alphabetical order, as are all characters other than 42letters. To look up your message, just ignore anything that is not a 43letter. 44 45=over 4 46 47=item accept() on closed socket %s 48 49(W closed) You tried to do an accept on a closed socket. Did you forget 50to check the return value of your socket() call? See 51L<perlfunc/accept>. 52 53=item ADJUST is experimental 54 55(S experimental::class) This warning is emitted if you use the C<ADJUST> 56keyword of C<use feature 'class'>. This keyword is currently 57experimental and its behaviour may change in future releases of Perl. 58 59=item Aliasing via reference is experimental 60 61(S experimental::refaliasing) This warning is emitted if you use 62a reference constructor on the left-hand side of an assignment to 63alias one variable to another. Simply suppress the warning if you 64want to use the feature, but know that in doing so you are taking 65the risk of using an experimental feature which may change or be 66removed in a future Perl version: 67 68 no warnings "experimental::refaliasing"; 69 use feature "refaliasing"; 70 \$x = \$y; 71 72=item '%c' allowed only after types %s in %s 73 74(F) The modifiers '!', '<' and '>' are allowed in pack() or unpack() only 75after certain types. See L<perlfunc/pack>. 76 77=item alpha->numify() is lossy 78 79(W numeric) An alpha version can not be numified without losing 80information. 81 82=item Ambiguous call resolved as CORE::%s(), qualify as such or use & 83 84(W ambiguous) A subroutine you have declared has the same name as a Perl 85keyword, and you have used the name without qualification for calling 86one or the other. Perl decided to call the builtin because the 87subroutine is not imported. 88 89To force interpretation as a subroutine call, either put an ampersand 90before the subroutine name, or qualify the name with its package. 91Alternatively, you can import the subroutine (or pretend that it's 92imported with the C<use subs> pragma). 93 94To silently interpret it as the Perl operator, use the C<CORE::> prefix 95on the operator (e.g. C<CORE::log($x)>) or declare the subroutine 96to be an object method (see L<perlsub/"Subroutine Attributes"> or 97L<attributes>). 98 99=item Ambiguous range in transliteration operator 100 101(F) You wrote something like C<tr/a-z-0//> which doesn't mean anything at 102all. To include a C<-> character in a transliteration, put it either 103first or last. (In the past, C<tr/a-z-0//> was synonymous with 104C<tr/a-y//>, which was probably not what you would have expected.) 105 106=item Ambiguous use of %s resolved as %s 107 108(S ambiguous) You said something that may not be interpreted the way 109you thought. Normally it's pretty easy to disambiguate it by supplying 110a missing quote, operator, parenthesis pair or declaration. 111 112=item Ambiguous use of -%s resolved as -&%s() 113 114(S ambiguous) You wrote something like C<-foo>, which might be the 115string C<"-foo">, or a call to the function C<foo>, negated. If you meant 116the string, just write C<"-foo">. If you meant the function call, 117write C<-foo()>. 118 119=item Ambiguous use of %c resolved as operator %c 120 121(S ambiguous) C<%>, C<&>, and C<*> are both infix operators (modulus, 122bitwise and, and multiplication) I<and> initial special characters 123(denoting hashes, subroutines and typeglobs), and you said something 124like C<*foo * foo> that might be interpreted as either of them. We 125assumed you meant the infix operator, but please try to make it more 126clear -- in the example given, you might write C<*foo * foo()> if you 127really meant to multiply a glob by the result of calling a function. 128 129=item Ambiguous use of %c{%s} resolved to %c%s 130 131(W ambiguous) You wrote something like C<@{foo}>, which might be 132asking for the variable C<@foo>, or it might be calling a function 133named foo, and dereferencing it as an array reference. If you wanted 134the variable, you can just write C<@foo>. If you wanted to call the 135function, write C<@{foo()}> ... or you could just not have a variable 136and a function with the same name, and save yourself a lot of trouble. 137 138=item Ambiguous use of %c{%s[...]} resolved to %c%s[...] 139 140=item Ambiguous use of %c{%s{...}} resolved to %c%s{...} 141 142(W ambiguous) You wrote something like C<${foo[2]}> (where foo represents 143the name of a Perl keyword), which might be looking for element number 1442 of the array named C<@foo>, in which case please write C<$foo[2]>, or you 145might have meant to pass an anonymous arrayref to the function named 146foo, and then do a scalar deref on the value it returns. If you meant 147that, write C<${foo([2])}>. 148 149In regular expressions, the C<${foo[2]}> syntax is sometimes necessary 150to disambiguate between array subscripts and character classes. 151C</$length[2345]/>, for instance, will be interpreted as C<$length> followed 152by the character class C<[2345]>. If an array subscript is what you 153want, you can avoid the warning by changing C</${length[2345]}/> to the 154unsightly C</${\$length[2345]}/>, by renaming your array to something 155that does not coincide with a built-in keyword, or by simply turning 156off warnings with C<no warnings 'ambiguous';>. 157 158=item '|' and '<' may not both be specified on command line 159 160(F) An error peculiar to VMS. Perl does its own command line 161redirection, and found that STDIN was a pipe, and that you also tried to 162redirect STDIN using '<'. Only one STDIN stream to a customer, please. 163 164=item '|' and '>' may not both be specified on command line 165 166(F) An error peculiar to VMS. Perl does its own command line 167redirection, and thinks you tried to redirect stdout both to a file and 168into a pipe to another command. You need to choose one or the other, 169though nothing's stopping you from piping into a program or Perl script 170which 'splits' output into two streams, such as 171 172 open(OUT,">$ARGV[0]") or die "Can't write to $ARGV[0]: $!"; 173 while (<STDIN>) { 174 print; 175 print OUT; 176 } 177 close OUT; 178 179=item Applying %s to %s will act on scalar(%s) 180 181(W misc) The pattern match (C<//>), substitution (C<s///>), and 182transliteration (C<tr///>) operators work on scalar values. If you apply 183one of them to an array or a hash, it will convert the array or hash to 184a scalar value (the length of an array, or the population info of a 185hash) and then work on that scalar value. This is probably not what 186you meant to do. See L<perlfunc/grep> and L<perlfunc/map> for 187alternatives. 188 189=item Arg too short for msgsnd 190 191(F) msgsnd() requires a string at least as long as sizeof(long). 192 193=item Argument "%s" isn't numeric%s 194 195(W numeric) The indicated string was fed as an argument to an operator 196that expected a numeric value instead. If you're fortunate the message 197will identify which operator was so unfortunate. 198 199Note that for the C<Inf> and C<NaN> (infinity and not-a-number) the 200definition of "numeric" is somewhat unusual: the strings themselves 201(like "Inf") are considered numeric, and anything following them is 202considered non-numeric. 203 204=item Argument list not closed for PerlIO layer "%s" 205 206(W layer) When pushing a layer with arguments onto the Perl I/O 207system you forgot the ) that closes the argument list. (Layers 208take care of transforming data between external and internal 209representations.) Perl stopped parsing the layer list at this 210point and did not attempt to push this layer. If your program 211didn't explicitly request the failing operation, it may be the 212result of the value of the environment variable PERLIO. 213 214=item Argument "%s" treated as 0 in increment (++) 215 216(W numeric) The indicated string was fed as an argument to the C<++> 217operator which expects either a number or a string matching 218C</^[a-zA-Z]*[0-9]*\z/>. See L<perlop/Auto-increment and 219Auto-decrement> for details. 220 221=item Array passed to stat will be coerced to a scalar%s 222 223(W syntax) You called stat() on an array, but the array will be 224coerced to a scalar - the number of elements in the array. 225 226=item A signature parameter must start with '$', '@' or '%' 227 228(F) Each subroutine signature parameter declaration must start with a valid 229sigil; for example: 230 231 sub foo ($x, $, $y = 1, @z) {} 232 233=item A slurpy parameter may not have a default value 234 235(F) Only scalar subroutine signature parameters may have a default value; 236for example: 237 238 sub foo ($x = 1) {} # legal 239 sub foo (@x = (1)) {} # invalid 240 sub foo (%x = (a => b)) {} # invalid 241 242=item assertion botched: %s 243 244(X) The malloc package that comes with Perl had an internal failure. 245 246=item Assertion %s failed: file "%s", line %d 247 248(X) A general assertion failed. The file in question must be examined. 249 250=item Assigned value is not a reference 251 252(F) You tried to assign something that was not a reference to an lvalue 253reference (e.g., C<\$x = $y>). If you meant to make $x an alias to $y, use 254C<\$x = \$y>. 255 256=item Assigned value is not %s reference 257 258(F) You tried to assign a reference to a reference constructor, but the 259two references were not of the same type. You cannot alias a scalar to 260an array, or an array to a hash; the two types must match. 261 262 \$x = \@y; # error 263 \@x = \%y; # error 264 $y = []; 265 \$x = $y; # error; did you mean \$y? 266 267=item Assigning non-zero to $[ is no longer possible 268 269(F) When the "array_base" feature is disabled 270(e.g., and under C<use v5.16;>, and as of Perl 5.30) 271the special variable C<$[>, which is deprecated, is now a fixed zero value. 272 273=item Assignment to both a list and a scalar 274 275(F) If you assign to a conditional operator, the 2nd and 3rd arguments 276must either both be scalars or both be lists. Otherwise Perl won't 277know which context to supply to the right side. 278 279=item Assuming NOT a POSIX class since %s in regex; marked by S<<-- HERE> in m/%s/ 280 281(W regexp) You had something like these: 282 283 [[:alnum]] 284 [[:digit:xyz] 285 286They look like they might have been meant to be the POSIX classes 287C<[:alnum:]> or C<[:digit:]>. If so, they should be written: 288 289 [[:alnum:]] 290 [[:digit:]xyz] 291 292Since these aren't legal POSIX class specifications, but are legal 293bracketed character classes, Perl treats them as the latter. In the 294first example, it matches the characters C<":">, C<"[">, C<"a">, C<"l">, 295C<"m">, C<"n">, and C<"u">. 296 297If these weren't meant to be POSIX classes, this warning message is 298spurious, and can be suppressed by reordering things, such as 299 300 [[al:num]] 301 302or 303 304 [[:munla]] 305 306=item <> at require-statement should be quotes 307 308(F) You wrote C<< require <file> >> when you should have written 309C<require 'file'>. 310 311=item Attempt to access disallowed key '%s' in a restricted hash 312 313(F) The failing code has attempted to get or set a key which is not in 314the current set of allowed keys of a restricted hash. 315 316=item Attempt to bless into a freed package 317 318(F) You wrote C<bless $foo> with one argument after somehow causing 319the current package to be freed. Perl cannot figure out what to 320do, so it throws up its hands in despair. 321 322=item Attempt to bless into a class 323 324(F) You are attempting to call C<bless> with a package name that is a 325new-style C<class>. This is not necessary, as instances created by the 326constructor are already in the correct class. Instances cannot be created 327by other means, such as C<bless>. 328 329=item Attempt to bless into a reference 330 331(F) The CLASSNAME argument to the bless() operator is expected to be 332the name of the package to bless the resulting object into. You've 333supplied instead a reference to something: perhaps you wrote 334 335 bless $self, $proto; 336 337when you intended 338 339 bless $self, ref($proto) || $proto; 340 341If you actually want to bless into the stringified version 342of the reference supplied, you need to stringify it yourself, for 343example by: 344 345 bless $self, "$proto"; 346 347=item Attempt to clear deleted array 348 349(S debugging) An array was assigned to when it was being freed. 350Freed values are not supposed to be visible to Perl code. This 351can also happen if XS code calls C<av_clear> from a custom magic 352callback on the array. 353 354=item Attempt to delete disallowed key '%s' from a restricted hash 355 356(F) The failing code attempted to delete from a restricted hash a key 357which is not in its key set. 358 359=item Attempt to delete readonly key '%s' from a restricted hash 360 361(F) The failing code attempted to delete a key whose value has been 362declared readonly from a restricted hash. 363 364=item Attempt to free non-arena SV: 0x%x 365 366(S internal) All SV objects are supposed to be allocated from arenas 367that will be garbage collected on exit. An SV was discovered to be 368outside any of those arenas. 369 370=item Attempt to free nonexistent shared string '%s'%s 371 372(S internal) Perl maintains a reference-counted internal table of 373strings to optimize the storage and access of hash keys and other 374strings. This indicates someone tried to decrement the reference count 375of a string that can no longer be found in the table. 376 377=item Attempt to free temp prematurely: SV 0x%x 378 379(S debugging) Mortalized values are supposed to be freed by the 380free_tmps() routine. This indicates that something else is freeing the 381SV before the free_tmps() routine gets a chance, which means that the 382free_tmps() routine will be freeing an unreferenced scalar when it does 383try to free it. 384 385=item Attempt to free unreferenced glob pointers 386 387(S internal) The reference counts got screwed up on symbol aliases. 388 389=item Attempt to free unreferenced scalar: SV 0x%x 390 391(S internal) Perl went to decrement the reference count of a scalar to 392see if it would go to 0, and discovered that it had already gone to 0 393earlier, and should have been freed, and in fact, probably was freed. 394This could indicate that SvREFCNT_dec() was called too many times, or 395that SvREFCNT_inc() was called too few times, or that the SV was 396mortalized when it shouldn't have been, or that memory has been 397corrupted. 398 399=item Attempt to pack pointer to temporary value 400 401(W pack) You tried to pass a temporary value (like the result of a 402function, or a computed expression) to the "p" pack() template. This 403means the result contains a pointer to a location that could become 404invalid anytime, even before the end of the current statement. Use 405literals or global values as arguments to the "p" pack() template to 406avoid this warning. 407 408=item Attempt to reload %s aborted. 409 410(F) You tried to load a file with C<use> or C<require> that failed to 411compile once already. Perl will not try to compile this file again 412unless you delete its entry from %INC. See L<perlfunc/require> and 413L<perlvar/%INC>. 414 415=item Attempt to set length of freed array 416 417(W misc) You tried to set the length of an array which has 418been freed. You can do this by storing a reference to the 419scalar representing the last index of an array and later 420assigning through that reference. For example 421 422 $r = do {my @a; \$#a}; 423 $$r = 503 424 425=item Attempt to use reference as lvalue in substr 426 427(W substr) You supplied a reference as the first argument to substr() 428used as an lvalue, which is pretty strange. Perhaps you forgot to 429dereference it first. See L<perlfunc/substr>. 430 431=item Attribute prototype(%s) discards earlier prototype attribute in same sub 432 433(W misc) A sub was declared as sub foo : prototype(A) : prototype(B) {}, for 434example. Since each sub can only have one prototype, the earlier 435declaration(s) are discarded while the last one is applied. 436 437=item av_reify called on tied array 438 439(S debugging) This indicates that something went wrong and Perl got I<very> 440confused about C<@_> or C<@DB::args> being tied. 441 442=item Bad arg length for %s, is %u, should be %d 443 444(F) You passed a buffer of the wrong size to one of msgctl(), semctl() 445or shmctl(). In C parlance, the correct sizes are, respectively, 446S<sizeof(struct msqid_ds *)>, S<sizeof(struct semid_ds *)>, and 447S<sizeof(struct shmid_ds *)>. 448 449=item Bad evalled substitution pattern 450 451(F) You've used the C</e> switch to evaluate the replacement for a 452substitution, but perl found a syntax error in the code to evaluate, 453most likely an unexpected right brace '}'. 454 455=item Bad filehandle: %s 456 457(F) A symbol was passed to something wanting a filehandle, but the 458symbol has no filehandle associated with it. Perhaps you didn't do an 459open(), or did it in another package. 460 461=item Bad free() ignored 462 463(S malloc) An internal routine called free() on something that had never 464been malloc()ed in the first place. Mandatory, but can be disabled by 465setting environment variable C<PERL_BADFREE> to 0. 466 467This message can be seen quite often with DB_File on systems with "hard" 468dynamic linking, like C<AIX> and C<OS/2>. It is a bug of C<Berkeley DB> 469which is left unnoticed if C<DB> uses I<forgiving> system malloc(). 470 471=item Bad infix plugin result (%zd) - did not consume entire identifier <%s> 472 473(F) A plugin using the C<PL_infix_plugin> mechanism to parse an infix 474keyword consumed part of a named identifier operator name but did not 475consume all of it. This is not permitted as it leads to fragile parsing 476results. 477 478=item Badly placed ()'s 479 480(A) You've accidentally run your script through B<csh> instead 481of Perl. Check the #! line, or manually feed your script into 482Perl yourself. 483 484=item Bad name after %s 485 486(F) You started to name a symbol by using a package prefix, and then 487didn't finish the symbol. In particular, you can't interpolate outside 488of quotes, so 489 490 $var = 'myvar'; 491 $sym = mypack::$var; 492 493is not the same as 494 495 $var = 'myvar'; 496 $sym = "mypack::$var"; 497 498=item Bad plugin affecting keyword '%s' 499 500(F) An extension using the keyword plugin mechanism violated the 501plugin API. 502 503=item Bad realloc() ignored 504 505(S malloc) An internal routine called realloc() on something that 506had never been malloc()ed in the first place. Mandatory, but can 507be disabled by setting the environment variable C<PERL_BADFREE> to 1. 508 509=item Bad symbol for %s 510 511(P) An internal request asked to add an entry of the named type to something that 512wasn't a symbol table entry. 513 514=item Bad symbol for scalar 515 516(P) An internal request asked to add a scalar entry to something that 517wasn't a symbol table entry. 518 519=item Bareword found in conditional 520 521(W bareword) The compiler found a bareword where it expected a 522conditional, which often indicates that an || or && was parsed as part 523of the last argument of the previous construct, for example: 524 525 open FOO || die; 526 527It may also indicate a misspelled constant that has been interpreted as 528a bareword: 529 530 use constant TYPO => 1; 531 if (TYOP) { print "foo" } 532 533The C<strict> pragma is useful in avoiding such errors. 534 535=item Bareword in require contains "%s" 536 537=item Bareword in require maps to disallowed filename "%s" 538 539=item Bareword in require maps to empty filename 540 541(F) The bareword form of require has been invoked with a filename which could 542not have been generated by a valid bareword permitted by the parser. You 543shouldn't be able to get this error from Perl code, but XS code may throw it 544if it passes an invalid module name to C<Perl_load_module>. 545 546=item Bareword in require must not start with a double-colon: "%s" 547 548(F) In C<require Bare::Word>, the bareword is not allowed to start with a 549double-colon. Write C<require ::Foo::Bar> as C<require Foo::Bar> instead. 550 551=item Bareword "%s" not allowed while "strict subs" in use 552 553(F) With "strict subs" in use, a bareword is only allowed as a 554subroutine identifier, in curly brackets or to the left of the "=>" 555symbol. Perhaps you need to predeclare a subroutine? 556 557=item Bareword "%s" refers to nonexistent package 558 559(W bareword) You used a qualified bareword of the form C<Foo::>, but the 560compiler saw no other uses of that namespace before that point. Perhaps 561you need to predeclare a package? 562 563=item Bareword filehandle "%s" not allowed under 'no feature "bareword_filehandles"' 564 565(F) You attempted to use a bareword filehandle with the 566C<bareword_filehandles> feature disabled. 567 568Only the built-in handles C<STDIN>, C<STDOUT>, C<STDERR>, C<ARGV>, 569C<ARGVOUT> and C<DATA> can be used with the C<bareword_filehandles> 570feature disabled. 571 572=item BEGIN failed--compilation aborted 573 574(F) An untrapped exception was raised while executing a BEGIN 575subroutine. Compilation stops immediately and the interpreter is 576exited. 577 578=item BEGIN not safe after errors--compilation aborted 579 580(F) Perl found a C<BEGIN {}> subroutine (or a C<use> directive, which 581implies a C<BEGIN {}>) after one or more compilation errors had already 582occurred. Since the intended environment for the C<BEGIN {}> could not 583be guaranteed (due to the errors), and since subsequent code likely 584depends on its correct operation, Perl just gave up. 585 586=item \%d better written as $%d 587 588(W syntax) Outside of patterns, backreferences live on as variables. 589The use of backslashes is grandfathered on the right-hand side of a 590substitution, but stylistically it's better to use the variable form 591because other Perl programmers will expect it, and it works better if 592there are more than 9 backreferences. 593 594=item Binary number > 0b11111111111111111111111111111111 non-portable 595 596(W portable) The binary number you specified is larger than 2**32-1 597(4294967295) and therefore non-portable between systems. See 598L<perlport> for more on portability concerns. 599 600=item bind() on closed socket %s 601 602(W closed) You tried to do a bind on a closed socket. Did you forget to 603check the return value of your socket() call? See L<perlfunc/bind>. 604 605=item binmode() on closed filehandle %s 606 607(W unopened) You tried binmode() on a filehandle that was never opened. 608Check your control flow and number of arguments. 609 610=item Bit vector size > 32 non-portable 611 612(W portable) Using bit vector sizes larger than 32 is non-portable. 613 614=item Bizarre copy of %s 615 616(P) Perl detected an attempt to copy an internal value that is not 617copiable. 618 619=item Bizarre SvTYPE [%d] 620 621(P) When starting a new thread or returning values from a thread, Perl 622encountered an invalid data type. 623 624=item Both or neither range ends should be Unicode in regex; marked by 625S<<-- HERE> in m/%s/ 626 627(W regexp) (only under C<S<use re 'strict'>> or within C<(?[...])>) 628 629In a bracketed character class in a regular expression pattern, you 630had a range which has exactly one end of it specified using C<\N{}>, and 631the other end is specified using a non-portable mechanism. Perl treats 632the range as a Unicode range, that is, all the characters in it are 633considered to be the Unicode characters, and which may be different code 634points on some platforms Perl runs on. For example, C<[\N{U+06}-\x08]> 635is treated as if you had instead said C<[\N{U+06}-\N{U+08}]>, that is it 636matches the characters whose code points in Unicode are 6, 7, and 8. 637But that C<\x08> might indicate that you meant something different, so 638the warning gets raised. 639 640=item Buffer overflow in prime_env_iter: %s 641 642(W internal) A warning peculiar to VMS. While Perl was preparing to 643iterate over %ENV, it encountered a logical name or symbol definition 644which was too long, so it was truncated to the string shown. 645 646=item Built-in function '%s' is experimental 647 648(S experimental::builtin) A call is being made to a function in the 649C<builtin::> namespace, which is currently experimental. The existence 650or nature of the function may be subject to change in a future version 651of Perl. 652 653=item builtin::import can only be called at compile time 654 655(F) The C<import> method of the C<builtin> package was invoked when no code 656is currently being compiled. Since this method is used to introduce new 657lexical subroutines into the scope currently being compiled, this is not 658going to have any effect. 659 660=item Builtin version bundle "%s" is not supported by Perl 661 662(F) You attempted to C<use builtin :ver> for a version number that is either 663older than 5.39 (when the ability was added), or newer than the current perl 664version. 665 666=item Callback called exit 667 668(F) A subroutine invoked from an external package via call_sv() 669exited by calling exit. 670 671=item %s() called too early to check prototype 672 673(W prototype) You've called a function that has a prototype before the 674parser saw a definition or declaration for it, and Perl could not check 675that the call conforms to the prototype. You need to either add an 676early prototype declaration for the subroutine in question, or move the 677subroutine definition ahead of the call to get proper prototype 678checking. Alternatively, if you are certain that you're calling the 679function correctly, you may put an ampersand before the name to avoid 680the warning. See L<perlsub>. 681 682=item Cannot assign :param(%s) to field %s because that name is already in use 683 684(F) An attempt was made to apply a parameter name to a field, when the name 685is already being used by another field in the same class, or one of its 686parent classes. This would cause a name clash so is not allowed. 687 688=item Cannot chr %f 689 690(F) You passed an invalid number (like an infinity or not-a-number) to C<chr>. 691 692=item Cannot complete in-place edit of %s: %s 693 694(F) Your perl script appears to have changed directory while 695performing an in-place edit of a file specified by a relative path, 696and your system doesn't include the directory relative POSIX functions 697needed to handle that. 698 699=item Cannot compress %f in pack 700 701(F) You tried compressing an infinity or not-a-number as an unsigned 702integer with BER, which makes no sense. 703 704=item Cannot compress integer in pack 705 706(F) An argument to pack("w",...) was too large to compress. 707The BER compressed integer format can only be used with positive 708integers, and you attempted to compress a very large number (> 1e308). 709See L<perlfunc/pack>. 710 711=item Cannot compress negative numbers in pack 712 713(F) An argument to pack("w",...) was negative. The BER compressed integer 714format can only be used with positive integers. See L<perlfunc/pack>. 715 716=item Cannot convert a reference to %s to typeglob 717 718(F) You manipulated Perl's symbol table directly, stored a reference 719in it, then tried to access that symbol via conventional Perl syntax. 720The access triggers Perl to autovivify that typeglob, but it there is 721no legal conversion from that type of reference to a typeglob. 722 723=item Cannot copy to %s 724 725(P) Perl detected an attempt to copy a value to an internal type that cannot 726be directly assigned to. 727 728=item Cannot create class %s as it already has a non-empty @ISA 729 730(F) An attempt was made to create a class out of a package that already has 731an C<@ISA> array, and the array is not empty. This is not permitted, as it 732would lead to a class with inconsistent inheritance. 733 734=item Cannot create an object of incomplete class "%s" 735 736(F) An attempt was made to create an object of a class where the start 737of the class definition has been seen, but the class has not been 738completed. 739 740This can happen for a failed eval, or if you attempt to create an 741object at compile time before the class is complete: 742 743 eval "class Foo {"; Foo->new; # error 744 class Bar { BEGIN { Bar->new } }; # error 745 746=item Cannot find encoding "%s" 747 748(S io) You tried to apply an encoding that did not exist to a filehandle, 749either with open() or binmode(). 750 751=item Cannot invoke a method of "%s" on an instance of "%s" 752 753(F) You tried to directly call a C<method> subroutine of one class by passing 754in a value that is an instance of a different class. This is not permitted, 755as the method would not have access to the correct instance fields. 756 757=item Cannot invoke method on a non-instance 758 759(F) You tried to directly call a C<method> subroutine of a class by passing 760in a value that is not an instance of that class. This is not permitted, as 761the method would not then have access to its instance fields. 762 763=item Cannot open %s as a dirhandle: it is already open as a filehandle 764 765(F) You tried to use opendir() to associate a dirhandle to a symbol (glob 766or scalar) that already holds a filehandle. Since this idiom might render 767your code confusing, it was deprecated in Perl 5.10. As of Perl 5.28, it 768is a fatal error. 769 770=item Cannot open %s as a filehandle: it is already open as a dirhandle 771 772(F) You tried to use open() to associate a filehandle to a symbol (glob 773or scalar) that already holds a dirhandle. Since this idiom might render 774your code confusing, it was deprecated in Perl 5.10. As of Perl 5.28, it 775is a fatal error. 776 777=item Cannot '%s' outside of a 'class' 778 779(F) You attempted to use one of the keywords that only makes sense inside 780a C<class> definition, at a location that is not inside such a class. 781 782=item Cannot pack %f with '%c' 783 784(F) You tried converting an infinity or not-a-number to an integer, 785which makes no sense. 786 787=item Cannot printf %f with '%c' 788 789(F) You tried printing an infinity or not-a-number as a character (%c), 790which makes no sense. Maybe you meant '%s', or just stringifying it? 791 792=item Cannot reopen existing class "%s" 793 794(F) You tried to begin a C<class> definition for a class that already exists. 795A class may only have one definition block. 796 797=item Cannot set tied @DB::args 798 799(F) C<caller> tried to set C<@DB::args>, but found it tied. Tying C<@DB::args> 800is not supported. (Before this error was added, it used to crash.) 801 802=item Cannot tie unreifiable array 803 804(P) You somehow managed to call C<tie> on an array that does not 805keep a reference count on its arguments and cannot be made to 806do so. Such arrays are not even supposed to be accessible to 807Perl code, but are only used internally. 808 809=item Cannot use __CLASS__ outside of a method or field initializer expression 810 811(F) A C<__CLASS__> expression yields the class name of the object instance 812executing the current method, and therefore it can only be placed inside an 813actual method (or method-like expression, such as a field initializer 814expression). 815 816=item Cannot yet reorder sv_vcatpvfn() arguments from va_list 817 818(F) Some XS code tried to use C<sv_vcatpvfn()> or a related function with a 819format string that specifies explicit indexes for some of the elements, and 820using a C-style variable-argument list (a C<va_list>). This is not currently 821supported. XS authors wanting to do this must instead construct a C array 822of C<SV*> scalars containing the arguments. 823 824=item Can only compress unsigned integers in pack 825 826(F) An argument to pack("w",...) was not an integer. The BER compressed 827integer format can only be used with positive integers, and you attempted 828to compress something else. See L<perlfunc/pack>. 829 830=item Can't "%s" out of a "defer" block 831 832(F) An attempt was made to jump out of the scope of a C<defer> block by using 833a control-flow statement such as C<return>, C<goto> or a loop control. This is 834not permitted. 835 836=item Can't "%s" out of a "finally" block 837 838(F) Similar to above, but involving a C<finally> block at the end of a 839C<try>/C<catch> construction rather than a C<defer> block. 840 841=item Can't bless an object reference 842 843(F) You attempted to call C<bless> on a value that already refers to a real 844object instance. 845 846=item Can't bless non-reference value 847 848(F) Only hard references may be blessed. This is how Perl "enforces" 849encapsulation of objects. See L<perlobj>. 850 851=item Can't "break" in a loop topicalizer 852 853(F) You called C<break>, but you're in a C<foreach> block rather than 854a C<given> block. You probably meant to use C<next> or C<last>. 855 856=item Can't "break" outside a given block 857 858(F) You called C<break>, but you're not inside a C<given> block. 859 860=item Can't call destructor for 0x%p in global destruction 861 862(S) This should not happen. Internals code has set up a destructor 863using C<mortal_destructor_sv> or C<mortal_destructor_x> which is firing 864during global destruction. Please attempt to reduce the code that triggers 865this warning down to a small an example as possible and then report the 866problem to L<https://github.com/Perl/perl5/issues/new/choose> 867 868=item Can't call method "%s" on an undefined value 869 870(F) You used the syntax of a method call, but the slot filled by the 871object reference or package name contains an undefined value. Something 872like this will reproduce the error: 873 874 $BADREF = undef; 875 process $BADREF 1,2,3; 876 $BADREF->process(1,2,3); 877 878=item Can't call method "%s" on unblessed reference 879 880(F) A method call must know in what package it's supposed to run. It 881ordinarily finds this out from the object reference you supply, but you 882didn't supply an object reference in this case. A reference isn't an 883object reference until it has been blessed. See L<perlobj>. 884 885=item Can't call method "%s" without a package or object reference 886 887(F) You used the syntax of a method call, but the slot filled by the 888object reference or package name contains an expression that returns a 889defined value which is neither an object reference nor a package name. 890Something like this will reproduce the error: 891 892 $BADREF = 42; 893 process $BADREF 1,2,3; 894 $BADREF->process(1,2,3); 895 896=item Can't call mro_isa_changed_in() on anonymous symbol table 897 898(P) Perl got confused as to whether a hash was a plain hash or a 899symbol table hash when trying to update @ISA caches. 900 901=item Can't call mro_method_changed_in() on anonymous symbol table 902 903(F) An XS module tried to call C<mro_method_changed_in> on a hash that was 904not attached to the symbol table. 905 906=item Can't chdir to %s 907 908(F) You called C<perl -x/foo/bar>, but F</foo/bar> is not a directory 909that you can chdir to, possibly because it doesn't exist. 910 911=item Can't coerce %s to %s in %s 912 913(F) Certain types of SVs, in particular real symbol table entries 914(typeglobs), can't be forced to stop being what they are. So you can't 915say things like: 916 917 *foo += 1; 918 919You CAN say 920 921 $foo = *foo; 922 $foo += 1; 923 924but then $foo no longer contains a glob. 925 926=item Can't "continue" outside a when block 927 928(F) You called C<continue>, but you're not inside a C<when> 929or C<default> block. 930 931=item can't convert empty path 932 933(F) On Cygwin, you called a path conversion function with an empty path. 934Only non-empty paths are legal. 935 936=item Can't create pipe mailbox 937 938(P) An error peculiar to VMS. The process is suffering from exhausted 939quotas or other plumbing problems. 940 941=item Can't declare %s in "%s" 942 943(F) Only scalar, array, and hash variables may be declared as "my", "our" or 944"state" variables. They must have ordinary identifiers as names. 945 946=item Can't "default" outside a topicalizer 947 948(F) You have used a C<default> block that is neither inside a 949C<foreach> loop nor a C<given> block. (Note that this error is 950issued on exit from the C<default> block, so you won't get the 951error if you use an explicit C<continue>.) 952 953=item Can't determine class of operator %s, assuming BASEOP 954 955(S) This warning indicates something wrong in the internals of perl. 956Perl was trying to find the class (e.g. LISTOP) of a particular OP, 957and was unable to do so. This is likely to be due to a bug in the perl 958internals, or due to a bug in XS code which manipulates perl optrees. 959 960=item Can't do inplace edit: %s is not a regular file 961 962(S inplace) You tried to use the B<-i> switch on a special file, such as 963a file in /dev, a FIFO or an uneditable directory. The file was ignored. 964 965=item Can't do inplace edit on %s: %s 966 967(S inplace) The creation of the new file failed for the indicated 968reason. 969 970=item Can't do inplace edit: %s would not be unique 971 972(S inplace) Your filesystem does not support filenames longer than 14 973characters and Perl was unable to create a unique filename during 974inplace editing with the B<-i> switch. The file was ignored. 975 976=item Can't do %s("%s") on non-UTF-8 locale; resolved to "%s". 977 978(W locale) You are 1) running under "C<use locale>"; 2) the current 979locale is not a UTF-8 one; 3) you tried to do the designated case-change 980operation on the specified Unicode character; and 4) the result of this 981operation would mix Unicode and locale rules, which likely conflict. 982Mixing of different rule types is forbidden, so the operation was not 983done; instead the result is the indicated value, which is the best 984available that uses entirely Unicode rules. That turns out to almost 985always be the original character, unchanged. 986 987It is generally a bad idea to mix non-UTF-8 locales and Unicode, and 988this issue is one of the reasons why. This warning is raised when 989Unicode rules would normally cause the result of this operation to 990contain a character that is in the range specified by the locale, 9910..255, and hence is subject to the locale's rules, not Unicode's. 992 993If you are using locale purely for its characteristics related to things 994like its numeric and time formatting (and not C<LC_CTYPE>), consider 995using a restricted form of the locale pragma (see L<perllocale/The "use 996locale" pragma>) like "S<C<use locale ':not_characters'>>". 997 998Note that failed case-changing operations done as a result of 999case-insensitive C</i> regular expression matching will show up in this 1000warning as having the C<fc> operation (as that is what the regular 1001expression engine calls behind the scenes.) 1002 1003=item Can't do waitpid with flags 1004 1005(F) This machine doesn't have either waitpid() or wait4(), so only 1006waitpid() without flags is emulated. 1007 1008=item Can't emulate -%s on #! line 1009 1010(F) The #! line specifies a switch that doesn't make sense at this 1011point. For example, it'd be kind of silly to put a B<-x> on the #! 1012line. 1013 1014=item Can't %s %s-endian %ss on this platform 1015 1016(F) Your platform's byte-order is neither big-endian nor little-endian, 1017or it has a very strange pointer size. Packing and unpacking big- or 1018little-endian floating point values and pointers may not be possible. 1019See L<perlfunc/pack>. 1020 1021=item Can't exec "%s": %s 1022 1023(W exec) A system(), exec(), or piped open call could not execute the 1024named program for the indicated reason. Typical reasons include: the 1025permissions were wrong on the file, the file wasn't found in 1026C<$ENV{PATH}>, the executable in question was compiled for another 1027architecture, or the #! line in a script points to an interpreter that 1028can't be run for similar reasons. (Or maybe your system doesn't support 1029#! at all.) 1030 1031=item Can't exec %s 1032 1033(F) Perl was trying to execute the indicated program for you because 1034that's what the #! line said. If that's not what you wanted, you may 1035need to mention "perl" on the #! line somewhere. 1036 1037=item Can't execute %s 1038 1039(F) You used the B<-S> switch, but the copies of the script to execute 1040found in the PATH did not have correct permissions. 1041 1042=item Can't find an opnumber for "%s" 1043 1044(F) A string of a form C<CORE::word> was given to prototype(), but there 1045is no builtin with the name C<word>. 1046 1047=item Can't find label %s 1048 1049(F) You said to goto a label that isn't mentioned anywhere that it's 1050possible for us to go to. See L<perlfunc/goto>. 1051 1052=item Can't find %s on PATH 1053 1054(F) You used the B<-S> switch, but the script to execute could not be 1055found in the PATH. 1056 1057=item Can't find %s on PATH, '.' not in PATH 1058 1059(F) You used the B<-S> switch, but the script to execute could not be 1060found in the PATH, or at least not with the correct permissions. The 1061script exists in the current directory, but PATH prohibits running it. 1062 1063=item Can't find string terminator %s anywhere before EOF 1064 1065(F) Perl strings can stretch over multiple lines. This message means 1066that the closing delimiter was omitted. Because bracketed quotes count 1067nesting levels, the following is missing its final parenthesis: 1068 1069 print q(The character '(' starts a side comment.); 1070 1071If you're getting this error from a here-document, you may have 1072included unseen whitespace before or after your closing tag or there 1073may not be a linebreak after it. A good programmer's editor will have 1074a way to help you find these characters (or lack of characters). See 1075L<perlop> for the full details on here-documents. 1076 1077=item Can't find Unicode property definition "%s" 1078 1079=item Can't find Unicode property definition "%s" in regex; marked by <-- HERE in m/%s/ 1080 1081(F) The named property which you specified via C<\p> or C<\P> is not one 1082known to Perl. Perhaps you misspelled the name? See 1083L<perluniprops/Properties accessible through \p{} and \P{}> 1084for a complete list of available official 1085properties. If it is a 1086L<user-defined property|perlunicode/User-Defined Character Properties> 1087it must have been defined by the time the regular expression is 1088matched. 1089 1090If you didn't mean to use a Unicode property, escape the C<\p>, either 1091by C<\\p> (just the C<\p>) or by C<\Q\p> (the rest of the string, or 1092until C<\E>). 1093 1094=item Can't fork: %s 1095 1096(F) A fatal error occurred while trying to fork while opening a 1097pipeline. 1098 1099=item Can't fork, trying again in 5 seconds 1100 1101(W pipe) A fork in a piped open failed with EAGAIN and will be retried 1102after five seconds. 1103 1104=item Can't get filespec - stale stat buffer? 1105 1106(S) A warning peculiar to VMS. This arises because of the difference 1107between access checks under VMS and under the Unix model Perl assumes. 1108Under VMS, access checks are done by filename, rather than by bits in 1109the stat buffer, so that ACLs and other protections can be taken into 1110account. Unfortunately, Perl assumes that the stat buffer contains all 1111the necessary information, and passes it, instead of the filespec, to 1112the access-checking routine. It will try to retrieve the filespec using 1113the device name and FID present in the stat buffer, but this works only 1114if you haven't made a subsequent call to the CRTL stat() routine, 1115because the device name is overwritten with each call. If this warning 1116appears, the name lookup failed, and the access-checking routine gave up 1117and returned FALSE, just to be conservative. (Note: The access-checking 1118routine knows about the Perl C<stat> operator and file tests, so you 1119shouldn't ever see this warning in response to a Perl command; it arises 1120only if some internal code takes stat buffers lightly.) 1121 1122=item Can't get pipe mailbox device name 1123 1124(P) An error peculiar to VMS. After creating a mailbox to act as a 1125pipe, Perl can't retrieve its name for later use. 1126 1127=item Can't get SYSGEN parameter value for MAXBUF 1128 1129(P) An error peculiar to VMS. Perl asked $GETSYI how big you want your 1130mailbox buffers to be, and didn't get an answer. 1131 1132=item Can't "goto" into a binary or list expression 1133 1134(F) A "goto" statement was executed to jump into the middle of a binary 1135or list expression. You can't get there from here. The reason for this 1136restriction is that the interpreter would get confused as to how many 1137arguments there are, resulting in stack corruption or crashes. This 1138error occurs in cases such as these: 1139 1140 goto F; 1141 print do { F: }; # Can't jump into the arguments to print 1142 1143 goto G; 1144 $x + do { G: $y }; # How is + supposed to get its first operand? 1145 1146=item Can't "goto" into a "defer" block 1147 1148(F) A C<goto> statement was executed to jump into the scope of a C<defer> 1149block. This is not permitted. 1150 1151=item Can't "goto" into a "given" block 1152 1153(F) A "goto" statement was executed to jump into the middle of a C<given> 1154block. You can't get there from here. See L<perlfunc/goto>. 1155 1156=item Can't "goto" into the middle of a foreach loop 1157 1158(F) A "goto" statement was executed to jump into the middle of a foreach 1159loop. You can't get there from here. See L<perlfunc/goto>. 1160 1161=item Can't "goto" out of a pseudo block 1162 1163(F) A "goto" statement was executed to jump out of what might look like 1164a block, except that it isn't a proper block. This usually occurs if 1165you tried to jump out of a sort() block or subroutine, which is a no-no. 1166See L<perlfunc/goto>. 1167 1168=item Can't goto subroutine from an eval-%s 1169 1170(F) The "goto subroutine" call can't be used to jump out of an eval 1171"string" or block. 1172 1173=item Can't goto subroutine from a sort sub (or similar callback) 1174 1175(F) The "goto subroutine" call can't be used to jump out of the 1176comparison sub for a sort(), or from a similar callback (such 1177as the reduce() function in List::Util). 1178 1179=item Can't goto subroutine outside a subroutine 1180 1181(F) The deeply magical "goto subroutine" call can only replace one 1182subroutine call for another. It can't manufacture one out of whole 1183cloth. In general you should be calling it out of only an AUTOLOAD 1184routine anyway. See L<perlfunc/goto>. 1185 1186=item Can't ignore signal CHLD, forcing to default 1187 1188(W signal) Perl has detected that it is being run with the SIGCHLD 1189signal (sometimes known as SIGCLD) disabled. Since disabling this 1190signal will interfere with proper determination of exit status of child 1191processes, Perl has reset the signal to its default value. This 1192situation typically indicates that the parent program under which Perl 1193may be running (e.g. cron) is being very careless. 1194 1195=item Can't kill a non-numeric process ID 1196 1197(F) Process identifiers must be (signed) integers. It is a fatal error to 1198attempt to kill() an undefined, empty-string or otherwise non-numeric 1199process identifier. 1200 1201=item Can't "last" outside a loop block 1202 1203(F) A "last" statement was executed to break out of the current block, 1204except that there's this itty bitty problem called there isn't a current 1205block. Note that an "if" or "else" block doesn't count as a "loopish" 1206block, as doesn't a block given to sort(), map() or grep(). You can 1207usually double the curlies to get the same effect though, because the 1208inner curlies will be considered a block that loops once. See 1209L<perlfunc/last>. 1210 1211=item Can't linearize anonymous symbol table 1212 1213(F) Perl tried to calculate the method resolution order (MRO) of a 1214package, but failed because the package stash has no name. 1215 1216=item Can't load '%s' for module %s 1217 1218(F) The module you tried to load failed to load a dynamic extension. 1219This may either mean that you upgraded your version of perl to one 1220that is incompatible with your old dynamic extensions (which is known 1221to happen between major versions of perl), or (more likely) that your 1222dynamic extension was built against an older version of the library 1223that is installed on your system. You may need to rebuild your old 1224dynamic extensions. 1225 1226=item Can't localize lexical variable %s 1227 1228(F) You used local on a variable name that was previously declared as a 1229lexical variable using "my" or "state". This is not allowed. If you 1230want to localize a package variable of the same name, qualify it with 1231the package name. 1232 1233=item Can't localize through a reference 1234 1235(F) You said something like C<local $$ref>, which Perl can't currently 1236handle, because when it goes to restore the old value of whatever $ref 1237pointed to after the scope of the local() is finished, it can't be sure 1238that $ref will still be a reference. 1239 1240=item Can't locate %s 1241 1242(F) You said to C<do> (or C<require>, or C<use>) a file that couldn't be found. 1243Perl looks for the file in all the locations mentioned in @INC, unless 1244the file name included the full path to the file. Perhaps you need 1245to set the PERL5LIB or PERL5OPT environment variable to say where the 1246extra library is, or maybe the script needs to add the library name 1247to @INC. Or maybe you just misspelled the name of the file. See 1248L<perlfunc/require> and L<lib>. 1249 1250=item Can't locate auto/%s.al in @INC 1251 1252(F) A function (or method) was called in a package which allows 1253autoload, but there is no function to autoload. Most probable causes 1254are a misprint in a function/method name or a failure to C<AutoSplit> 1255the file, say, by doing C<make install>. 1256 1257=item Can't locate loadable object for module %s in @INC 1258 1259(F) The module you loaded is trying to load an external library, like 1260for example, F<foo.so> or F<bar.dll>, but the L<DynaLoader> module was 1261unable to locate this library. See L<DynaLoader>. 1262 1263=item Can't locate object method "%s" via package "%s" 1264 1265(F) You called a method correctly, and it correctly indicated a package 1266functioning as a class, but that package doesn't define that particular 1267method, nor does any of its base classes. See L<perlobj>. 1268 1269=item Can't locate object method "%s" via package "%s" (perhaps you forgot 1270to load "%s"?) 1271 1272(F) You called a method on a class that did not exist, and the method 1273could not be found in UNIVERSAL. This often means that a method 1274requires a package that has not been loaded. 1275 1276=item Can't locate object method "INC", nor "INCDIR" nor string overload via package "%s" %s in @INC 1277 1278(F) You pushed an object, either directly or via an array reference hook, 1279into C<@INC>, but the object doesn't support any known hook methods, nor 1280a string overload and is also not a blessed CODE reference. In short the 1281C<require> function does not know what to do with the object. 1282See also L<perlfunc/require>. 1283 1284=item Attempt to call undefined %s method with arguments ("%s"%s) 1285via package "%s" (Perhaps you forgot to load the package?) 1286 1287(D deprecated::missing_import_called_with_args) You called the 1288C<import()> or C<unimport()> method of a class that has no import method 1289defined in its inheritance graph, and passed an argument to the method. 1290This is very often the sign of a misspelled package name in a use or 1291require statement that has silently succeded due to a case insensitive 1292file system. 1293 1294Another common reason this may happen is when mistakenly attempting to 1295import or unimport a symbol from a class definition or package which 1296does not use C<Exporter> or otherwise define its own C<import> or 1297C<unimport> method. 1298 1299=item Can't locate package %s for @%s::ISA 1300 1301(W syntax) The @ISA array contained the name of another package that 1302doesn't seem to exist. 1303 1304=item Can't locate PerlIO%s 1305 1306(F) You tried to use in open() a PerlIO layer that does not exist, 1307e.g. open(FH, ">:nosuchlayer", "somefile"). 1308 1309=item Can't make list assignment to %ENV on this system 1310 1311(F) List assignment to %ENV is not supported on some systems, notably 1312VMS. 1313 1314=item Can't make loaded symbols global on this platform while loading %s 1315 1316(S) A module passed the flag 0x01 to DynaLoader::dl_load_file() to request 1317that symbols from the stated file are made available globally within the 1318process, but that functionality is not available on this platform. Whilst 1319the module likely will still work, this may prevent the perl interpreter 1320from loading other XS-based extensions which need to link directly to 1321functions defined in the C or XS code in the stated file. 1322 1323=item Can't modify %s in %s 1324 1325(F) You aren't allowed to assign to the item indicated, or otherwise try 1326to change it, such as with an auto-increment. 1327 1328=item Can't modify non-lvalue subroutine call of &%s 1329 1330=item Can't modify non-lvalue subroutine call of &%s in %s 1331 1332(F) Subroutines meant to be used in lvalue context should be declared as 1333such. See L<perlsub/"Lvalue subroutines">. 1334 1335=item Can't modify reference to %s in %s assignment 1336 1337(F) Only a limited number of constructs can be used as the argument to a 1338reference constructor on the left-hand side of an assignment, and what 1339you used was not one of them. See L<perlref/Assigning to References>. 1340 1341=item Can't modify reference to localized parenthesized array in list 1342assignment 1343 1344(F) Assigning to C<\local(@array)> or C<\(local @array)> is not supported, as 1345it is not clear exactly what it should do. If you meant to make @array 1346refer to some other array, use C<\@array = \@other_array>. If you want to 1347make the elements of @array aliases of the scalars referenced on the 1348right-hand side, use C<\(@array) = @scalar_refs>. 1349 1350=item Can't modify reference to parenthesized hash in list assignment 1351 1352(F) Assigning to C<\(%hash)> is not supported. If you meant to make %hash 1353refer to some other hash, use C<\%hash = \%other_hash>. If you want to 1354make the elements of %hash into aliases of the scalars referenced on the 1355right-hand side, use a hash slice: C<\@hash{@keys} = @those_scalar_refs>. 1356 1357=item Can't msgrcv to read-only var 1358 1359(F) The target of a msgrcv must be modifiable to be used as a receive 1360buffer. 1361 1362=item Can't "next" outside a loop block 1363 1364(F) A "next" statement was executed to reiterate the current block, but 1365there isn't a current block. Note that an "if" or "else" block doesn't 1366count as a "loopish" block, as doesn't a block given to sort(), map() or 1367grep(). You can usually double the curlies to get the same effect 1368though, because the inner curlies will be considered a block that loops 1369once. See L<perlfunc/next>. 1370 1371=item Can't open %s: %s 1372 1373(S inplace) The implicit opening of a file through use of the C<< <> >> 1374filehandle, either implicitly under the C<-n> or C<-p> command-line 1375switches, or explicitly, failed for the indicated reason. Usually 1376this is because you don't have read permission for a file which 1377you named on the command line. 1378 1379(F) You tried to call perl with the B<-e> switch, but F</dev/null> (or 1380your operating system's equivalent) could not be opened. 1381 1382=item Can't open a reference 1383 1384(W io) You tried to open a scalar reference for reading or writing, 1385using the 3-arg open() syntax: 1386 1387 open FH, '>', $ref; 1388 1389but your version of perl is compiled without perlio, and this form of 1390open is not supported. 1391 1392=item Can't open bidirectional pipe 1393 1394(W pipe) You tried to say C<open(CMD, "|cmd|")>, which is not supported. 1395You can try any of several modules in the Perl library to do this, such 1396as IPC::Open2. Alternately, direct the pipe's output to a file using 1397">", and then read it in under a different file handle. 1398 1399=item Can't open error file %s as stderr 1400 1401(F) An error peculiar to VMS. Perl does its own command line 1402redirection, and couldn't open the file specified after '2>' or '2>>' on 1403the command line for writing. 1404 1405=item Can't open input file %s as stdin 1406 1407(F) An error peculiar to VMS. Perl does its own command line 1408redirection, and couldn't open the file specified after '<' on the 1409command line for reading. 1410 1411=item Can't open output file %s as stdout 1412 1413(F) An error peculiar to VMS. Perl does its own command line 1414redirection, and couldn't open the file specified after '>' or '>>' on 1415the command line for writing. 1416 1417=item Can't open output pipe (name: %s) 1418 1419(P) An error peculiar to VMS. Perl does its own command line 1420redirection, and couldn't open the pipe into which to send data destined 1421for stdout. 1422 1423=item Can't open perl script "%s": %s 1424 1425(F) The script you specified can't be opened for the indicated reason. 1426 1427If you're debugging a script that uses #!, and normally relies on the 1428shell's $PATH search, the -S option causes perl to do that search, so 1429you don't have to type the path or C<`which $scriptname`>. 1430 1431=item Can't read CRTL environ 1432 1433(S) A warning peculiar to VMS. Perl tried to read an element of %ENV 1434from the CRTL's internal environment array and discovered the array was 1435missing. You need to figure out where your CRTL misplaced its environ 1436or define F<PERL_ENV_TABLES> (see L<perlvms>) so that environ is not 1437searched. 1438 1439=item Can't redeclare "%s" in "%s" 1440 1441(F) A "my", "our" or "state" declaration was found within another declaration, 1442such as C<my ($x, my($y), $z)> or C<our (my $x)>. 1443 1444=item Can't "redo" outside a loop block 1445 1446(F) A "redo" statement was executed to restart the current block, but 1447there isn't a current block. Note that an "if" or "else" block doesn't 1448count as a "loopish" block, as doesn't a block given to sort(), map() 1449or grep(). You can usually double the curlies to get the same effect 1450though, because the inner curlies will be considered a block that 1451loops once. See L<perlfunc/redo>. 1452 1453=item Can't remove %s: %s, skipping file 1454 1455(S inplace) You requested an inplace edit without creating a backup 1456file. Perl was unable to remove the original file to replace it with 1457the modified file. The file was left unmodified. 1458 1459=item Can't rename in-place work file '%s' to '%s': %s 1460 1461(F) When closed implicitly, the temporary file for in-place editing 1462couldn't be renamed to the original filename. 1463 1464=item Can't rename %s to %s: %s, skipping file 1465 1466(F) The rename done by the B<-i> switch failed for some reason, 1467probably because you don't have write permission to the directory. 1468 1469=item Can't reopen input pipe (name: %s) in binary mode 1470 1471(P) An error peculiar to VMS. Perl thought stdin was a pipe, and tried 1472to reopen it to accept binary data. Alas, it failed. 1473 1474=item Can't represent character for Ox%X on this platform 1475 1476(F) There is a hard limit to how big a character code point can be due 1477to the fundamental properties of UTF-8, especially on EBCDIC 1478platforms. The given code point exceeds that. The only work-around is 1479to not use such a large code point. 1480 1481=item Can't reset %ENV on this system 1482 1483(F) You called C<reset('E')> or similar, which tried to reset 1484all variables in the current package beginning with "E". In 1485the main package, that includes %ENV. Resetting %ENV is not 1486supported on some systems, notably VMS. 1487 1488=item Can't resolve method "%s" overloading "%s" in package "%s" 1489 1490(F)(P) Error resolving overloading specified by a method name (as 1491opposed to a subroutine reference): no such method callable via the 1492package. If the method name is C<???>, this is an internal error. 1493 1494=item Can't return %s from lvalue subroutine 1495 1496(F) Perl detected an attempt to return illegal lvalues (such as 1497temporary or readonly values) from a subroutine used as an lvalue. This 1498is not allowed. 1499 1500=item Can't return outside a subroutine 1501 1502(F) The return statement was executed in mainline code, that is, where 1503there was no subroutine call to return out of. See L<perlsub>. 1504 1505=item Can't return %s to lvalue scalar context 1506 1507(F) You tried to return a complete array or hash from an lvalue 1508subroutine, but you called the subroutine in a way that made Perl 1509think you meant to return only one value. You probably meant to 1510write parentheses around the call to the subroutine, which tell 1511Perl that the call should be in list context. 1512 1513=item Can't take log of %g 1514 1515(F) For ordinary real numbers, you can't take the logarithm of a 1516negative number or zero. There's a Math::Complex package that comes 1517standard with Perl, though, if you really want to do that for the 1518negative numbers. 1519 1520=item Can't take sqrt of %g 1521 1522(F) For ordinary real numbers, you can't take the square root of a 1523negative number. There's a Math::Complex package that comes standard 1524with Perl, though, if you really want to do that. 1525 1526=item Can't undef active subroutine 1527 1528(F) You can't undefine a routine that's currently running. You can, 1529however, redefine it while it's running, and you can even undef the 1530redefined subroutine while the old routine is running. Go figure. 1531 1532=item Can't unweaken a nonreference 1533 1534(F) You attempted to unweaken something that was not a reference. Only 1535references can be unweakened. 1536 1537=item Can't upgrade %s (%d) to %d 1538 1539(P) The internal sv_upgrade routine adds "members" to an SV, making it 1540into a more specialized kind of SV. The top several SV types are so 1541specialized, however, that they cannot be interconverted. This message 1542indicates that such a conversion was attempted. 1543 1544=item Can't use '%c' after -mname 1545 1546(F) You tried to call perl with the B<-m> switch, but you put something 1547other than "=" after the module name. 1548 1549=item Can't use a hash as a reference 1550 1551(F) You tried to use a hash as a reference, as in 1552C<< %foo->{"bar"} >> or C<< %$ref->{"hello"} >>. Versions of perl 1553<= 5.22.0 used to allow this syntax, but shouldn't 1554have. This was deprecated in perl 5.6.1. 1555 1556=item Can't use an array as a reference 1557 1558(F) You tried to use an array as a reference, as in 1559C<< @foo->[23] >> or C<< @$ref->[99] >>. Versions of perl <= 5.22.0 1560used to allow this syntax, but shouldn't have. This 1561was deprecated in perl 5.6.1. 1562 1563=item Can't use anonymous symbol table for method lookup 1564 1565(F) The internal routine that does method lookup was handed a symbol 1566table that doesn't have a name. Symbol tables can become anonymous 1567for example by undefining stashes: C<undef %Some::Package::>. 1568 1569=item Can't use an undefined value as %s reference 1570 1571(F) A value used as either a hard reference or a symbolic reference must 1572be a defined value. This helps to delurk some insidious errors. 1573 1574=item Can't use bareword ("%s") as %s ref while "strict refs" in use 1575 1576(F) Only hard references are allowed by "strict refs". Symbolic 1577references are disallowed. See L<perlref>. 1578 1579=item Can't use %! because Errno.pm is not available 1580 1581(F) The first time the C<%!> hash is used, perl automatically loads the 1582Errno.pm module. The Errno module is expected to tie the %! hash to 1583provide symbolic names for C<$!> errno values. 1584 1585=item Can't use both '<' and '>' after type '%c' in %s 1586 1587(F) A type cannot be forced to have both big-endian and little-endian 1588byte-order at the same time, so this combination of modifiers is not 1589allowed. See L<perlfunc/pack>. 1590 1591=item Can't use 'defined(@array)' (Maybe you should just omit the defined()?) 1592 1593(F) defined() is not useful on arrays because it 1594checks for an undefined I<scalar> value. If you want to see if the 1595array is empty, just use C<if (@array) { # not empty }> for example. 1596 1597=item Can't use 'defined(%hash)' (Maybe you should just omit the defined()?) 1598 1599(F) C<defined()> is not usually right on hashes. 1600 1601Although C<defined %hash> is false on a plain not-yet-used hash, it 1602becomes true in several non-obvious circumstances, including iterators, 1603weak references, stash names, even remaining true after C<undef %hash>. 1604These things make C<defined %hash> fairly useless in practice, so it now 1605generates a fatal error. 1606 1607If a check for non-empty is what you wanted then just put it in boolean 1608context (see L<perldata/Scalar values>): 1609 1610 if (%hash) { 1611 # not empty 1612 } 1613 1614If you had C<defined %Foo::Bar::QUUX> to check whether such a package 1615variable exists then that's never really been reliable, and isn't 1616a good way to enquire about the features of a package, or whether 1617it's loaded, etc. 1618 1619=item Can't use %s for loop variable 1620 1621(P) The parser got confused when trying to parse a C<foreach> loop. 1622 1623=item Can't use global %s in %s 1624 1625(F) You tried to declare a magical variable as a lexical variable. This 1626is not allowed, because the magic can be tied to only one location 1627(namely the global variable) and it would be incredibly confusing to 1628have variables in your program that looked like magical variables but 1629weren't. 1630 1631=item Can't use '%c' in a group with different byte-order in %s 1632 1633(F) You attempted to force a different byte-order on a type 1634that is already inside a group with a byte-order modifier. 1635For example you cannot force little-endianness on a type that 1636is inside a big-endian group. 1637 1638=item Can't use "my %s" in sort comparison 1639 1640(F) The global variables $a and $b are reserved for sort comparisons. 1641You mentioned $a or $b in the same line as the <=> or cmp operator, 1642and the variable had earlier been declared as a lexical variable. 1643Either qualify the sort variable with the package name, or rename the 1644lexical variable. 1645 1646=item Can't use %s ref as %s ref 1647 1648(F) You've mixed up your reference types. You have to dereference a 1649reference of the type needed. You can use the ref() function to 1650test the type of the reference, if need be. 1651 1652=item Can't use string ("%s") as %s ref while "strict refs" in use 1653 1654=item Can't use string ("%s"...) as %s ref while "strict refs" in use 1655 1656(F) You've told Perl to dereference a string, something which 1657C<use strict> blocks to prevent it happening accidentally. See 1658L<perlref/"Symbolic references">. This can be triggered by an C<@> or C<$> 1659in a double-quoted string immediately before interpolating a variable, 1660for example in C<"user @$twitter_id">, which says to treat the contents 1661of C<$twitter_id> as an array reference; use a C<\> to have a literal C<@> 1662symbol followed by the contents of C<$twitter_id>: C<"user \@$twitter_id">. 1663 1664=item Can't use subscript on %s 1665 1666(F) The compiler tried to interpret a bracketed expression as a 1667subscript. But to the left of the brackets was an expression that 1668didn't look like a hash or array reference, or anything else subscriptable. 1669 1670=item Can't use \%c to mean $%c in expression 1671 1672(W syntax) In an ordinary expression, backslash is a unary operator that 1673creates a reference to its argument. The use of backslash to indicate a 1674backreference to a matched substring is valid only as part of a regular 1675expression pattern. Trying to do this in ordinary Perl code produces a 1676value that prints out looking like SCALAR(0xdecaf). Use the $1 form 1677instead. 1678 1679=item Can't weaken a nonreference 1680 1681(F) You attempted to weaken something that was not a reference. Only 1682references can be weakened. 1683 1684=item Can't "when" outside a topicalizer 1685 1686(F) You have used a when() block that is neither inside a C<foreach> 1687loop nor a C<given> block. (Note that this error is issued on exit 1688from the C<when> block, so you won't get the error if the match fails, 1689or if you use an explicit C<continue>.) 1690 1691=item Can't x= to read-only value 1692 1693(F) You tried to repeat a constant value (often the undefined value) 1694with an assignment operator, which implies modifying the value itself. 1695Perhaps you need to copy the value to a temporary, and repeat that. 1696 1697=item catch block requires a (VAR) 1698 1699(F) You tried to use the C<try> and C<catch> syntax of C<use feature 'try'> 1700but did not include the error variable in the C<catch> block. The 1701parenthesized variable name is not optional, unlike in some other forms of 1702syntax you may be familiar with from CPAN modules or other languages. 1703 1704The required syntax is 1705 1706 try { ... } 1707 catch ($var) { ... } 1708 1709=item Changing use VERSION while another use VERSION is in scope is now deprecated 1710 1711(W deprecated) Once you have a C<use VERSION> statement in scope, any 1712C<use VERSION> statement that requests a different version is now deprecated, 1713due to the increasing complexity of swapping from one prevailing version to 1714another. 1715 1716It is suggested that you do not try to mix multiple different version 1717declarations within the same file as it leads to complex behaviours about the 1718visibility of features and builtin functions, as well as confusing human 1719readers. 1720 1721If it is essential to have different C<use VERSION> declarations in different 1722regions of the same file, you should surround each one by its own enclosing 1723scope so the two do not mix. 1724 1725 { 1726 use v5.20; 1727 ... 1728 } 1729 { 1730 use v5.36; 1731 ... 1732 } 1733 1734=item Character following "\c" must be printable ASCII 1735 1736(F) In C<\cI<X>>, I<X> must be a printable (non-control) ASCII character. 1737 1738Note that ASCII characters that don't map to control characters are 1739discouraged, and will generate the warning (when enabled) 1740L</""\c%c" is more clearly written simply as "%s"">. 1741 1742=item Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%s/ 1743 1744(F) (In the above the C<%c> is replaced by either C<p> or C<P>.) You 1745specified something that isn't a legal Unicode property name. Most 1746Unicode properties are specified by C<\p{...}>. But if the name is a 1747single character one, the braces may be omitted. 1748 1749=item Character in 'C' format wrapped in pack 1750 1751(W pack) You said 1752 1753 pack("C", $x) 1754 1755where $x is either less than 0 or more than 255; the C<"C"> format is 1756only for encoding native operating system characters (ASCII, EBCDIC, 1757and so on) and not for Unicode characters, so Perl behaved as if you meant 1758 1759 pack("C", $x & 255) 1760 1761If you actually want to pack Unicode codepoints, use the C<"U"> format 1762instead. 1763 1764=item Character in 'c' format wrapped in pack 1765 1766(W pack) You said 1767 1768 pack("c", $x) 1769 1770where $x is either less than -128 or more than 127; the C<"c"> format 1771is only for encoding native operating system characters (ASCII, EBCDIC, 1772and so on) and not for Unicode characters, so Perl behaved as if you meant 1773 1774 pack("c", $x & 255); 1775 1776If you actually want to pack Unicode codepoints, use the C<"U"> format 1777instead. 1778 1779=item Character in '%c' format wrapped in unpack 1780 1781(W unpack) You tried something like 1782 1783 unpack("H", "\x{2a1}") 1784 1785where the format expects to process a byte (a character with a value 1786below 256), but a higher value was provided instead. Perl uses the 1787value modulus 256 instead, as if you had provided: 1788 1789 unpack("H", "\x{a1}") 1790 1791=item Character in 'W' format wrapped in pack 1792 1793(W pack) You said 1794 1795 pack("U0W", $x) 1796 1797where $x is either less than 0 or more than 255. However, C<U0>-mode 1798expects all values to fall in the interval [0, 255], so Perl behaved 1799as if you meant: 1800 1801 pack("U0W", $x & 255) 1802 1803=item Character(s) in '%c' format wrapped in pack 1804 1805(W pack) You tried something like 1806 1807 pack("u", "\x{1f3}b") 1808 1809where the format expects to process a sequence of bytes (character with a 1810value below 256), but some of the characters had a higher value. Perl 1811uses the character values modulus 256 instead, as if you had provided: 1812 1813 pack("u", "\x{f3}b") 1814 1815=item Character(s) in '%c' format wrapped in unpack 1816 1817(W unpack) You tried something like 1818 1819 unpack("s", "\x{1f3}b") 1820 1821where the format expects to process a sequence of bytes (character with a 1822value below 256), but some of the characters had a higher value. Perl 1823uses the character values modulus 256 instead, as if you had provided: 1824 1825 unpack("s", "\x{f3}b") 1826 1827=item charnames alias definitions may not contain a sequence of multiple 1828spaces; marked by S<<-- HERE> in %s 1829 1830(F) You defined a character name which had multiple space characters 1831in a row. Change them to single spaces. Usually these names are 1832defined in the C<:alias> import argument to C<use charnames>, but they 1833could be defined by a translator installed into C<$^H{charnames}>. See 1834L<charnames/CUSTOM ALIASES>. 1835 1836=item chdir() on unopened filehandle %s 1837 1838(W unopened) You tried chdir() on a filehandle that was never opened. 1839 1840=item "\c%c" is more clearly written simply as "%s" 1841 1842(W syntax) The C<\cI<X>> construct is intended to be a way to specify 1843non-printable characters. You used it for a printable one, which 1844is better written as simply itself, perhaps preceded by a backslash 1845for non-word characters. Doing it the way you did is not portable 1846between ASCII and EBCDIC platforms. 1847 1848=item Class already has a superclass, cannot add another 1849 1850(F) You attempted to specify a second superclass for a C<class> by using 1851the C<:isa> attribute, when one is already specified. Unlike classes 1852whose instances are created with C<bless>, classes created via the 1853C<class> keyword cannot have more than one superclass. 1854 1855=item Class attribute %s requires a value 1856 1857(F) You specified an attribute for a class that would require a value to 1858be passed in parentheses, but did not provide one. Remember that 1859whitespace is B<not> permitted between the attribute name and its value; 1860you must write this as 1861 1862 class Example::Class :attr(VALUE) ... 1863 1864=item class is experimental 1865 1866(S experimental::class) This warning is emitted if you use the C<class> 1867keyword of C<use feature 'class'>. This keyword is currently 1868experimental and its behaviour may change in future releases of Perl. 1869 1870=item Class :isa attribute requires a class but "%s" is not one 1871 1872(F) When creating a subclass using the C<class> C<:isa> attribute, the 1873named superclass must also be a real class created using the C<class> 1874keyword. 1875 1876=item Cloning substitution context is unimplemented 1877 1878(F) Creating a new thread inside the C<s///> operator is not supported. 1879 1880=item closedir() attempted on invalid dirhandle %s 1881 1882(W io) The dirhandle you tried to close is either closed or not really 1883a dirhandle. Check your control flow. 1884 1885=item close() on unopened filehandle %s 1886 1887(W unopened) You tried to close a filehandle that was never opened. 1888 1889=item Closure prototype called 1890 1891(F) If a closure has attributes, the subroutine passed to an attribute 1892handler is the prototype that is cloned when a new closure is created. 1893This subroutine cannot be called. 1894 1895=item \C no longer supported in regex; marked by S<<-- HERE> in m/%s/ 1896 1897(F) The \C character class used to allow a match of single byte 1898within a multi-byte utf-8 character, but was removed in v5.24 as 1899it broke encapsulation and its implementation was extremely buggy. 1900If you really need to process the individual bytes, you probably 1901want to convert your string to one where each underlying byte is 1902stored as a character, with utf8::encode(). 1903 1904=item Code missing after '/' 1905 1906(F) You had a (sub-)template that ends with a '/'. There must be 1907another template code following the slash. See L<perlfunc/pack>. 1908 1909=item Code point 0x%X is not Unicode, and not portable 1910 1911(S non_unicode portable) You had a code point that has never been in any 1912standard, so it is likely that languages other than Perl will NOT 1913understand it. This code point also will not fit in a 32-bit word on 1914ASCII platforms and therefore is non-portable between systems. 1915 1916At one time, it was legal in some standards to have code points up to 19170x7FFF_FFFF, but not higher, and this code point is higher. 1918 1919Acceptance of these code points is a Perl extension, and you should 1920expect that nothing other than Perl can handle them; Perl itself on 1921EBCDIC platforms before v5.24 does not handle them. 1922 1923Perl also makes no guarantees that the representation of these code 1924points won't change at some point in the future, say when machines 1925become available that have larger than a 64-bit word. At that time, 1926files containing any of these, written by an older Perl might require 1927conversion before being readable by a newer Perl. 1928 1929=item Code point 0x%X is not Unicode, may not be portable 1930 1931(S non_unicode) You had a code point above the Unicode maximum 1932of U+10FFFF. 1933 1934Perl allows strings to contain a superset of Unicode code points, but 1935these may not be accepted by other languages/systems. Further, even if 1936these languages/systems accept these large code points, they may have 1937chosen a different representation for them than the UTF-8-like one that 1938Perl has, which would mean files are not exchangeable between them and 1939Perl. 1940 1941On EBCDIC platforms, code points above 0x3FFF_FFFF have a different 1942representation in Perl v5.24 than before, so any file containing these 1943that was written before that version will require conversion before 1944being readable by a later Perl. 1945 1946=item %s: Command not found 1947 1948(A) You've accidentally run your script through B<csh> or another shell 1949instead of Perl. Check the #! line, or manually feed your script into 1950Perl yourself. The #! line at the top of your file could look like 1951 1952 #!/usr/bin/perl 1953 1954=item %s: command not found 1955 1956(A) You've accidentally run your script through B<bash> or another shell 1957instead of Perl. Check the #! line, or manually feed your script into 1958Perl yourself. The #! line at the top of your file could look like 1959 1960 #!/usr/bin/perl 1961 1962=item %s: command not found: %s 1963 1964(A) You've accidentally run your script through B<zsh> or another shell 1965instead of Perl. Check the #! line, or manually feed your script into 1966Perl yourself. The #! line at the top of your file could look like 1967 1968 #!/usr/bin/perl 1969 1970=item Compilation failed in require 1971 1972(F) Perl could not compile a file specified in a C<require> statement. 1973Perl uses this generic message when none of the errors that it 1974encountered were severe enough to halt compilation immediately. 1975 1976=item connect() on closed socket %s 1977 1978(W closed) You tried to do a connect on a closed socket. Did you forget 1979to check the return value of your socket() call? See 1980L<perlfunc/connect>. 1981 1982=item Constant(%s): Call to &{$^H{%s}} did not return a defined value 1983 1984(F) The subroutine registered to handle constant overloading 1985(see L<overload>) or a custom charnames handler (see 1986L<charnames/CUSTOM TRANSLATORS>) returned an undefined value. 1987 1988=item Constant(%s): $^H{%s} is not defined 1989 1990(F) The parser found inconsistencies while attempting to define an 1991overloaded constant. Perhaps you forgot to load the corresponding 1992L<overload> pragma? 1993 1994=item Constant is not %s reference 1995 1996(F) A constant value (perhaps declared using the C<use constant> pragma) 1997is being dereferenced, but it amounts to the wrong type of reference. 1998The message indicates the type of reference that was expected. This 1999usually indicates a syntax error in dereferencing the constant value. 2000See L<perlsub/"Constant Functions"> and L<constant>. 2001 2002=item Constants from lexical variables potentially modified elsewhere are no longer permitted 2003 2004(F) You wrote something like 2005 2006 my $var; 2007 $sub = sub () { $var }; 2008 2009but $var is referenced elsewhere and could be modified after the C<sub> 2010expression is evaluated. Either it is explicitly modified elsewhere 2011(C<$var = 3>) or it is passed to a subroutine or to an operator like 2012C<printf> or C<map>, which may or may not modify the variable. 2013 2014Traditionally, Perl has captured the value of the variable at that 2015point and turned the subroutine into a constant eligible for inlining. 2016In those cases where the variable can be modified elsewhere, this 2017breaks the behavior of closures, in which the subroutine captures 2018the variable itself, rather than its value, so future changes to the 2019variable are reflected in the subroutine's return value. 2020 2021This usage was deprecated, and as of Perl 5.32 is no longer allowed, 2022making it possible to change the behavior in the future. 2023 2024If you intended for the subroutine to be eligible for inlining, then 2025make sure the variable is not referenced elsewhere, possibly by 2026copying it: 2027 2028 my $var2 = $var; 2029 $sub = sub () { $var2 }; 2030 2031If you do want this subroutine to be a closure that reflects future 2032changes to the variable that it closes over, add an explicit C<return>: 2033 2034 my $var; 2035 $sub = sub () { return $var }; 2036 2037=item Constant subroutine %s redefined 2038 2039(W redefine)(S) You redefined a subroutine which had previously 2040been eligible for inlining. See L<perlsub/"Constant Functions"> 2041for commentary and workarounds. 2042 2043=item Constant subroutine %s undefined 2044 2045(W misc) You undefined a subroutine which had previously been eligible 2046for inlining. See L<perlsub/"Constant Functions"> for commentary and 2047workarounds. 2048 2049=item Constant(%s) unknown 2050 2051(F) The parser found inconsistencies either while attempting 2052to define an overloaded constant, or when trying to find the 2053character name specified in the C<\N{...}> escape. Perhaps you 2054forgot to load the corresponding L<overload> pragma? 2055 2056=item :const is not permitted on named subroutines 2057 2058(F) The "const" attribute causes an anonymous subroutine to be run and 2059its value captured at the time that it is cloned. Named subroutines are 2060not cloned like this, so the attribute does not make sense on them. 2061 2062=item Copy method did not return a reference 2063 2064(F) The method which overloads "=" is buggy. See 2065L<overload/Copy Constructor>. 2066 2067=item &CORE::%s cannot be called directly 2068 2069(F) You tried to call a subroutine in the C<CORE::> namespace 2070with C<&foo> syntax or through a reference. Some subroutines 2071in this package cannot yet be called that way, but must be 2072called as barewords. Something like this will work: 2073 2074 BEGIN { *shove = \&CORE::push; } 2075 shove @array, 1,2,3; # pushes on to @array 2076 2077=item CORE::%s is not a keyword 2078 2079(F) The CORE:: namespace is reserved for Perl keywords. 2080 2081=item Corrupted regexp opcode %d > %d 2082 2083(P) This is either an error in Perl, or, if you're using 2084one, your L<custom regular expression engine|perlreapi>. If not the 2085latter, report the problem to L<https://github.com/Perl/perl5/issues/new/choose>. 2086 2087=item corrupted regexp pointers 2088 2089(P) The regular expression engine got confused by what the regular 2090expression compiler gave it. 2091 2092=item corrupted regexp program 2093 2094(P) The regular expression engine got passed a regexp program without a 2095valid magic number. 2096 2097=item Corrupt malloc ptr 0x%x at 0x%x 2098 2099(P) The malloc package that comes with Perl had an internal failure. 2100 2101=item Count after length/code in unpack 2102 2103(F) You had an unpack template indicating a counted-length string, but 2104you have also specified an explicit size for the string. See 2105L<perlfunc/pack>. 2106 2107=item Declaring references is experimental 2108 2109(S experimental::declared_refs) This warning is emitted if you use 2110a reference constructor on the right-hand side of C<my>, C<state>, C<our>, or 2111C<local>. Simply suppress the warning if you want to use the feature, but 2112know that in doing so you are taking the risk of using an experimental 2113feature which may change or be removed in a future Perl version: 2114 2115 no warnings "experimental::declared_refs"; 2116 use feature "declared_refs"; 2117 $fooref = my \$foo; 2118 2119=for comment 2120The following are used in lib/diagnostics.t for testing two =items that 2121share the same description. Changes here need to be propagated to there 2122 2123=item Deep recursion on anonymous subroutine 2124 2125=item Deep recursion on subroutine "%s" 2126 2127(W recursion) This subroutine has called itself (directly or indirectly) 2128100 times more than it has returned. This probably indicates an 2129infinite recursion, unless you're writing strange benchmark programs, in 2130which case it indicates something else. 2131 2132This threshold can be changed from 100, by recompiling the F<perl> binary, 2133setting the C pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value. 2134 2135=item (?(DEFINE)....) does not allow branches in regex; marked by 2136S<<-- HERE> in m/%s/ 2137 2138(F) You used something like C<(?(DEFINE)...|..)> which is illegal. The 2139most likely cause of this error is that you left out a parenthesis inside 2140of the C<....> part. 2141 2142The S<<-- HERE> shows whereabouts in the regular expression the problem was 2143discovered. 2144 2145=item %s defines neither package nor VERSION--version check failed 2146 2147(F) You said something like "use Module 42" but in the Module file 2148there are neither package declarations nor a C<$VERSION>. 2149 2150=item delete argument is not a HASH or ARRAY element or slice 2151 2152(F) The argument to C<delete> must be either a hash or array element, 2153such as: 2154 2155 $foo{$bar} 2156 $ref->{"susie"}[12] 2157 2158or a hash or array slice, such as: 2159 2160 @foo[$bar, $baz, $xyzzy] 2161 $ref->[12]->@{"susie", "queue"} 2162 2163or a hash key/value or array index/value slice, such as: 2164 2165 %foo[$bar, $baz, $xyzzy] 2166 $ref->[12]->%{"susie", "queue"} 2167 2168=item Delimiter for here document is too long 2169 2170(F) In a here document construct like C<<<FOO>, the label C<FOO> is too 2171long for Perl to handle. You have to be seriously twisted to write code 2172that triggers this error. 2173 2174=item DESTROY created new reference to dead object '%s' 2175 2176(F) A DESTROY() method created a new reference to the object which is 2177just being DESTROYed. Perl is confused, and prefers to abort rather 2178than to create a dangling reference. 2179 2180=item Did not produce a valid header 2181 2182See L</500 Server error>. 2183 2184=item %s did not return a true value 2185 2186(F) A required (or used) file must return a true value to indicate that 2187it compiled correctly and ran its initialization code correctly. It's 2188traditional to end such a file with a "1;", though any true value would 2189do. See L<perlfunc/require>. 2190 2191=item (Did you mean &%s instead?) 2192 2193(W misc) You probably referred to an imported subroutine &FOO as $FOO or 2194some such. 2195 2196=item (Did you mean "local" instead of "our"?) 2197 2198(W shadow) Remember that "our" does not localize the declared global 2199variable. You have declared it again in the same lexical scope, which 2200seems superfluous. 2201 2202=item (Did you mean $ or @ instead of %?) 2203 2204(W) You probably said %hash{$key} when you meant $hash{$key} or 2205@hash{@keys}. On the other hand, maybe you just meant %hash and got 2206carried away. 2207 2208=item Died 2209 2210(F) You passed die() an empty string (the equivalent of C<die "">) or 2211you called it with no args and C<$@> was empty. 2212 2213=item Document contains no data 2214 2215See L</500 Server error>. 2216 2217=item %s does not define %s::VERSION--version check failed 2218 2219(F) You said something like "use Module 42" but the Module did not 2220define a C<$VERSION>. 2221 2222=item '/' does not take a repeat count in %s 2223 2224(F) You cannot put a repeat count of any kind right after the '/' code. 2225See L<perlfunc/pack>. 2226 2227=item do "%s" failed, '.' is no longer in @INC; did you mean do "./%s"? 2228 2229(D deprecated::dot_in_inc) Previously C< do "somefile"; > would search 2230the current directory for the specified file. Since perl v5.26.0, F<.> 2231has been removed from C<@INC> by default, so this is no longer true. To 2232search the current directory (and only the current directory) you can 2233write C< do "./somefile"; >. 2234 2235=item '%s' does not appear to be an imported builtin function 2236 2237(F) An attempt was made to remove a previously-imported lexical from 2238L<builtin> by using the C<unimport> method (likely via C<no builtin ...> 2239syntax), but the requested function has not been imported into the current 2240scope. 2241 2242=item Don't know how to get file name 2243 2244(P) C<PerlIO_getname>, a perl internal I/O function specific to VMS, was 2245somehow called on another platform. This should not happen. 2246 2247=item Don't know how to handle magic of type \%o 2248 2249(P) The internal handling of magical variables has been cursed. 2250 2251=item Downgrading a use VERSION declaration to below v5.11 is not permitted 2252 2253(F) A C<use VERSION> statement that requests a version below v5.11 2254(when the effects of C<use strict> would be disabled) has been found 2255after a previous declaration of one having a larger number (which would 2256have enabled these effects). Because of a change to the way that 2257C<use VERSION> interacts with the strictness flags, this is no longer 2258supported. 2259 2260=item (Do you need to predeclare %s?) 2261 2262(S syntax) This is an educated guess made in conjunction with the message 2263"%s found where operator expected". It often means a subroutine or module 2264name is being referenced that hasn't been declared yet. This may be 2265because of ordering problems in your file, or because of a missing 2266"sub", "package", "require", or "use" statement. If you're referencing 2267something that isn't defined yet, you don't actually have to define the 2268subroutine or package before the current location. You can use an empty 2269"sub foo;" or "package FOO;" to enter a "forward" declaration. 2270 2271=item dump() must be written as CORE::dump() as of Perl 5.30 2272 2273(F) You used the obsolete C<dump()> built-in function. That was deprecated in 2274Perl 5.8.0. As of Perl 5.30 it must be written in fully qualified format: 2275C<CORE::dump()>. 2276 2277See L<perlfunc/dump>. 2278 2279=item dump is not supported 2280 2281(F) Your machine doesn't support dump/undump. 2282 2283=item Duplicate free() ignored 2284 2285(S malloc) An internal routine called free() on something that had 2286already been freed. 2287 2288=item Duplicate modifier '%c' after '%c' in %s 2289 2290(W unpack) You have applied the same modifier more than once after a 2291type in a pack template. See L<perlfunc/pack>. 2292 2293=item each on anonymous %s will always start from the beginning 2294 2295(W syntax) You called L<each|perlfunc/each> on an anonymous hash or 2296array. Since a new hash or array is created each time, each() will 2297restart iterating over your hash or array every time. 2298 2299=item elseif should be elsif 2300 2301(S syntax) There is no keyword "elseif" in Perl because Larry thinks 2302it's ugly. Your code will be interpreted as an attempt to call a method 2303named "elseif" for the class returned by the following block. This is 2304unlikely to be what you want. 2305 2306=item Empty \%c in regex; marked by S<<-- HERE> in m/%s/ 2307 2308=item Empty \%c{} 2309 2310=item Empty \%c{} in regex; marked by S<<-- HERE> in m/%s/ 2311 2312(F) You used something like C<\b{}>, C<\B{}>, C<\o{}>, C<\p>, C<\P>, or 2313C<\x> without specifying anything for it to operate on. 2314 2315Unfortunately, for backwards compatibility reasons, an empty C<\x> is 2316legal outside S<C<use re 'strict'>> and expands to a NUL character. 2317 2318=item Empty (?) without any modifiers in regex; marked by <-- HERE in m/%s/ 2319 2320(W regexp) (only under C<S<use re 'strict'>>) 2321C<(?)> does nothing, so perhaps this is a typo. 2322 2323=item ${^ENCODING} is no longer supported 2324 2325(F) The special variable C<${^ENCODING}>, formerly used to implement 2326the C<encoding> pragma, is no longer supported as of Perl 5.26.0. 2327 2328Setting it to anything other than C<undef> is a fatal error as of Perl 23295.28. 2330 2331=item ${^HOOK}{%s} may only be a CODE reference or undef 2332 2333(F) You attempted to assign something other than undef or a CODE ref to 2334C<%{^HOOK}>. Hooks may only be CODE refs. See L<perlvar/%{^HOOK}> for 2335details. 2336 2337=item Attempt to set unknown hook '%s' in %{^HOOK} 2338 2339(F) You attempted to assign something other than undef or a CODE ref to 2340C<%{^HOOK}>. Hooks may only be CODE refs. See L<perlvar/%{^HOOK}> for 2341details. 2342 2343=item entering effective %s failed 2344 2345(F) While under the C<use filetest> pragma, switching the real and 2346effective uids or gids failed. 2347 2348=item %ENV is aliased to %s 2349 2350(F) You're running under taint mode, and the C<%ENV> variable has been 2351aliased to another hash, so it doesn't reflect anymore the state of the 2352program's environment. This is potentially insecure. 2353 2354=item Error converting file specification %s 2355 2356(F) An error peculiar to VMS. Because Perl may have to deal with file 2357specifications in either VMS or Unix syntax, it converts them to a 2358single form when it must operate on them directly. Either you've passed 2359an invalid file specification to Perl, or you've found a case the 2360conversion routines don't handle. Drat. 2361 2362=item Error %s in expansion of %s 2363 2364(F) An error was encountered in handling a user-defined property 2365(L<perlunicode/User-Defined Character Properties>). These are 2366programmer written subroutines, hence subject to errors that may 2367prevent them from compiling or running. The calls to these subs are 2368C<eval>'d, and if there is a failure, this message is raised, using the 2369contents of C<$@> from the failed C<eval>. 2370 2371Another possibility is that tainted data was encountered somewhere in 2372the chain of expanding the property. If so, the message wording will 2373indicate that this is the problem. See L</Insecure user-defined 2374property %s>. 2375 2376=item Eval-group in insecure regular expression 2377 2378(F) Perl detected tainted data when trying to compile a regular 2379expression that contains the C<(?{ ... })> zero-width assertion, which 2380is unsafe. See L<perlre/(?{ code })>, and L<perlsec>. 2381 2382=item Eval-group not allowed at runtime, use re 'eval' in regex m/%s/ 2383 2384(F) Perl tried to compile a regular expression containing the 2385C<(?{ ... })> zero-width assertion at run time, as it would when the 2386pattern contains interpolated values. Since that is a security risk, 2387it is not allowed. If you insist, you may still do this by using the 2388C<re 'eval'> pragma or by explicitly building the pattern from an 2389interpolated string at run time and using that in an eval(). See 2390L<perlre/(?{ code })>. 2391 2392=item Eval-group not allowed, use re 'eval' in regex m/%s/ 2393 2394(F) A regular expression contained the C<(?{ ... })> zero-width 2395assertion, but that construct is only allowed when the C<use re 'eval'> 2396pragma is in effect. See L<perlre/(?{ code })>. 2397 2398=item EVAL without pos change exceeded limit in regex; marked by 2399S<<-- HERE> in m/%s/ 2400 2401(F) You used a pattern that nested too many EVAL calls without consuming 2402any text. Restructure the pattern so that text is consumed. 2403 2404The S<<-- HERE> shows whereabouts in the regular expression the problem was 2405discovered. 2406 2407=item Excessively long <> operator 2408 2409(F) The contents of a <> operator may not exceed the maximum size of a 2410Perl identifier. If you're just trying to glob a long list of 2411filenames, try using the glob() operator, or put the filenames into a 2412variable and glob that. 2413 2414=item exec? I'm not *that* kind of operating system 2415 2416(F) The C<exec> function is not implemented on some systems, e.g. 2417Catamount. See L<perlport>. 2418 2419=item %sExecution of %s aborted due to compilation errors. 2420 2421(F) The final summary message when a Perl compilation fails. 2422 2423=item Execution of %s aborted due to compilation errors. 2424 2425(F) The final summary message when a Perl compilation fails. 2426 2427=item exists argument is not a HASH or ARRAY element or a subroutine 2428 2429(F) The argument to C<exists> must be a hash or array element or a 2430subroutine with an ampersand, such as: 2431 2432 $foo{$bar} 2433 $ref->{"susie"}[12] 2434 &do_something 2435 2436=item exists argument is not a subroutine name 2437 2438(F) The argument to C<exists> for C<exists &sub> must be a subroutine name, 2439and not a subroutine call. C<exists &sub()> will generate this error. 2440 2441=item Exiting eval via %s 2442 2443(W exiting) You are exiting an eval by unconventional means, such as a 2444goto, or a loop control statement. 2445 2446=item Exiting format via %s 2447 2448(W exiting) You are exiting a format by unconventional means, such as a 2449goto, or a loop control statement. 2450 2451=item Exiting pseudo-block via %s 2452 2453(W exiting) You are exiting a rather special block construct (like a 2454sort block or subroutine) by unconventional means, such as a goto, or a 2455loop control statement. See L<perlfunc/sort>. 2456 2457=item Exiting subroutine via %s 2458 2459(W exiting) You are exiting a subroutine by unconventional means, such 2460as a goto, or a loop control statement. 2461 2462=item Exiting substitution via %s 2463 2464(W exiting) You are exiting a substitution by unconventional means, such 2465as a return, a goto, or a loop control statement. 2466 2467=item Expected %s reference in export_lexically 2468 2469(F) The type of a reference given to L<builtin/export_lexically> did not 2470match the sigil of the preceding name, or the value was not a reference at 2471all. 2472 2473=item Expecting close bracket in regex; marked by S<<-- HERE> in m/%s/ 2474 2475(F) You wrote something like 2476 2477 (?13 2478 2479to denote a capturing group of the form 2480L<C<(?I<PARNO>)>|perlre/(?PARNO) (?-PARNO) (?+PARNO) (?R) (?0)>, 2481but omitted the C<")">. 2482 2483=item Expecting interpolated extended charclass in regex; marked by <-- 2484HERE in m/%s/ 2485 2486(F) It looked like you were attempting to interpolate an 2487already-compiled extended character class, like so: 2488 2489 my $thai_or_lao = qr/(?[ \p{Thai} + \p{Lao} ])/; 2490 ... 2491 qr/(?[ \p{Digit} & $thai_or_lao ])/; 2492 2493But the marked code isn't syntactically correct to be such an 2494interpolated class. 2495 2496=item Experimental aliasing via reference not enabled 2497 2498(F) To do aliasing via references, you must first enable the feature: 2499 2500 no warnings "experimental::refaliasing"; 2501 use feature "refaliasing"; 2502 \$x = \$y; 2503 2504=item Experimental %s on scalar is now forbidden 2505 2506(F) An experimental feature added in Perl 5.14 allowed C<each>, C<keys>, 2507C<push>, C<pop>, C<shift>, C<splice>, C<unshift>, and C<values> to be called with a 2508scalar argument. This experiment is considered unsuccessful, and 2509has been removed. The C<postderef> feature may meet your needs better. 2510 2511=item Experimental subroutine signatures not enabled 2512 2513(F) To use subroutine signatures, you must first enable them: 2514 2515 use feature "signatures"; 2516 sub foo ($left, $right) { ... } 2517 2518=item Explicit blessing to '' (assuming package main) 2519 2520(W misc) You are blessing a reference to a zero length string. This has 2521the effect of blessing the reference into the package main. This is 2522usually not what you want. Consider providing a default target package, 2523e.g. bless($ref, $p || 'MyPackage'); 2524 2525=item export_lexically can only be called at compile time 2526 2527(F) L<builtin/export_lexically> was called at runtime. Because it creates 2528new names in the lexical scope currently being compiled, it can only be 2529called from code inside C<BEGIN> block in that scope. 2530 2531=item %s: Expression syntax 2532 2533(A) You've accidentally run your script through B<csh> instead of Perl. 2534Check the #! line, or manually feed your script into Perl yourself. 2535 2536=item %s failed--call queue aborted 2537 2538(F) An untrapped exception was raised while executing a UNITCHECK, 2539CHECK, INIT, or END subroutine. Processing of the remainder of the 2540queue of such routines has been prematurely ended. 2541 2542=item Failed to close in-place work file %s: %s 2543 2544(F) Closing an output file from in-place editing, as with the C<-i> 2545command-line switch, failed. 2546 2547=item False [] range "%s" in regex; marked by S<<-- HERE> in m/%s/ 2548 2549(W regexp)(F) A character class range must start and end at a literal 2550character, not another character class like C<\d> or C<[:alpha:]>. The "-" 2551in your false range is interpreted as a literal "-". In a C<(?[...])> 2552construct, this is an error, rather than a warning. Consider quoting 2553the "-", "\-". The S<<-- HERE> shows whereabouts in the regular expression 2554the problem was discovered. See L<perlre>. 2555 2556=item Fatal VMS error (status=%d) at %s, line %d 2557 2558(P) An error peculiar to VMS. Something untoward happened in a VMS 2559system service or RTL routine; Perl's exit status should provide more 2560details. The filename in "at %s" and the line number in "line %d" tell 2561you which section of the Perl source code is distressed. 2562 2563=item fcntl is not implemented 2564 2565(F) Your machine apparently doesn't implement fcntl(). What is this, a 2566PDP-11 or something? 2567 2568=item FETCHSIZE returned a negative value 2569 2570(F) A tied array claimed to have a negative number of elements, which 2571is not possible. 2572 2573=item Field already has a parameter name, cannot add another 2574 2575(F) A field may have at most one application of the C<:param> attribute to 2576assign a parameter name to it; once applied a second one is not allowed. 2577 2578=item Field attribute %s requires a value 2579 2580(F) You specified an attribute for a field that would require a value to 2581be passed in parentheses, but did not provide one. Remember that 2582whitespace is B<not> permitted between the attribute name and its value; 2583you must write this as 2584 2585 field $var :attr(VALUE) ... 2586 2587=item field is experimental 2588 2589(S experimental::class) This warning is emitted if you use the C<field> 2590keyword of C<use feature 'class'>. This keyword is currently 2591experimental and its behaviour may change in future releases of Perl. 2592 2593=item Field %s is not accessible outside a method 2594 2595(F) An attempt was made to access a field variable of a class from code 2596that does not appear inside the body of a C<method> subroutine. This is not 2597permitted, as only methods will have access to the fields of an instance. 2598 2599=item Field %s of "%s" is not accessible in a method of "%s" 2600 2601(F) An attempt was made to access a field variable of a class, from a 2602method of another class nested inside the one that actually defined it. 2603This is not permitted, as only methods defined by a given class are 2604permitted to access fields of that class. 2605 2606=item Field too wide in 'u' format in pack 2607 2608(W pack) Each line in an uuencoded string starts with a length indicator 2609which can't encode values above 63. So there is no point in asking for 2610a line length bigger than that. Perl will behave as if you specified 2611C<u63> as the format. 2612 2613=item Filehandle %s opened only for input 2614 2615(W io) You tried to write on a read-only filehandle. If you intended 2616it to be a read-write filehandle, you needed to open it with "+<" or 2617"+>" or "+>>" instead of with "<" or nothing. If you intended only to 2618write the file, use ">" or ">>". See L<perlfunc/open>. 2619 2620=item Filehandle %s opened only for output 2621 2622(W io) You tried to read from a filehandle opened only for writing, If 2623you intended it to be a read/write filehandle, you needed to open it 2624with "+<" or "+>" or "+>>" instead of with ">". If you intended only to 2625read from the file, use "<". See L<perlfunc/open>. Another possibility 2626is that you attempted to open filedescriptor 0 (also known as STDIN) for 2627output (maybe you closed STDIN earlier?). 2628 2629=item Filehandle %s reopened as %s only for input 2630 2631(W io) You opened for reading a filehandle that got the same filehandle id 2632as STDOUT or STDERR. This occurred because you closed STDOUT or STDERR 2633previously. 2634 2635=item Filehandle STDIN reopened as %s only for output 2636 2637(W io) You opened for writing a filehandle that got the same filehandle id 2638as STDIN. This occurred because you closed STDIN previously. 2639 2640=item Filehandle STD%s reopened as %s only for input 2641 2642(W io) You opened for reading a filehandle that got the same filehandle id 2643as STDOUT or STDERR. This occurred because you closed the handle previously. 2644 2645=item Final $ should be \$ or $name 2646 2647(F) You must now decide whether the final $ in a string was meant to be 2648a literal dollar sign, or was meant to introduce a variable name that 2649happens to be missing. So you have to put either the backslash or the 2650name. 2651 2652=item defer is experimental 2653 2654(S experimental::defer) The C<defer> block modifier is experimental. If you 2655want to use the feature, disable the warning with 2656C<no warnings 'experimental::defer'>, but know that in doing so you are taking 2657the risk that your code may break in a future Perl version. 2658 2659=item flock() on closed filehandle %s 2660 2661(W closed) The filehandle you're attempting to flock() got itself closed 2662some time before now. Check your control flow. flock() operates on 2663filehandles. Are you attempting to call flock() on a dirhandle by the 2664same name? 2665 2666=item for my (...) is experimental 2667 2668(S experimental::for_list) This warning is emitted if you use C<for> to 2669iterate multiple values at a time. This syntax is currently experimental 2670and its behaviour may change in future releases of Perl. 2671 2672=item Forked open '%s' not meaningful in <> 2673 2674(S inplace) You had C<|-> or C<-|> in C<@ARGV> and tried to use C<< <> 2675>> to read from it. 2676 2677Previously this would fork and produce a confusing error message. 2678 2679=item Format not terminated 2680 2681(F) A format must be terminated by a line with a solitary dot. Perl got 2682to the end of your file without finding such a line. 2683 2684=item Format %s redefined 2685 2686(W redefine) You redefined a format. To suppress this warning, say 2687 2688 { 2689 no warnings 'redefine'; 2690 eval "format NAME =..."; 2691 } 2692 2693=item Found = in conditional, should be == 2694 2695(W syntax) You said 2696 2697 if ($foo = 123) 2698 2699when you meant 2700 2701 if ($foo == 123) 2702 2703(or something like that). 2704 2705=item %s found where operator expected 2706 2707(S syntax) The Perl lexer knows whether to expect a term or an operator. 2708If it sees what it knows to be a term when it was expecting to see an 2709operator, it gives you this warning. Usually it indicates that an 2710operator or delimiter was omitted, such as a semicolon. 2711 2712=item gdbm store returned %d, errno %d, key "%s" 2713 2714(S) A warning from the GDBM_File extension that a store failed. 2715 2716=item gethostent not implemented 2717 2718(F) Your C library apparently doesn't implement gethostent(), probably 2719because if it did, it'd feel morally obligated to return every hostname 2720on the Internet. 2721 2722=item get%sname() on closed socket %s 2723 2724(W closed) You tried to get a socket or peer socket name on a closed 2725socket. Did you forget to check the return value of your socket() call? 2726 2727=item getpwnam returned invalid UIC %#o for user "%s" 2728 2729(S) A warning peculiar to VMS. The call to C<sys$getuai> underlying the 2730C<getpwnam> operator returned an invalid UIC. 2731 2732=item getsockopt() on closed socket %s 2733 2734(W closed) You tried to get a socket option on a closed socket. Did you 2735forget to check the return value of your socket() call? See 2736L<perlfunc/getsockopt>. 2737 2738=item get_layers: unknown argument '%s' 2739 2740(F) You called PerlIO::get_layers() with an unknown argument. Legal 2741arguments are provided in key/value pairs, with the keys being one 2742of C<input>, C<output> or C<detail>, followed by a boolean. 2743 2744=item given is deprecated 2745 2746(D deprecated::smartmatch) C<given> depends on smartmatch, which is 2747deprecated. It will be removed in Perl 5.42. See the explanation under 2748L<perlsyn/Experimental Details on given and when>. 2749 2750=item Global symbol "%s" requires explicit package name (did you forget to 2751declare "my %s"?) 2752 2753(F) You've said "use strict" or "use strict vars", which indicates 2754that all variables must either be lexically scoped (using "my" or "state"), 2755declared beforehand using "our", or explicitly qualified to say 2756which package the global variable is in (using "::"). 2757 2758=item glob failed (%s) 2759 2760(S glob) Something went wrong with the external program(s) used 2761for C<glob> and C<< <*.c> >>. Usually, this means that you supplied a C<glob> 2762pattern that caused the external program to fail and exit with a 2763nonzero status. If the message indicates that the abnormal exit 2764resulted in a coredump, this may also mean that your csh (C shell) 2765is broken. If so, you should change all of the csh-related variables 2766in config.sh: If you have tcsh, make the variables refer to it as 2767if it were csh (e.g. C<full_csh='/usr/bin/tcsh'>); otherwise, make them 2768all empty (except that C<d_csh> should be C<'undef'>) so that Perl will 2769think csh is missing. In either case, after editing config.sh, run 2770C<./Configure -S> and rebuild Perl. 2771 2772=item Glob not terminated 2773 2774(F) The lexer saw a left angle bracket in a place where it was expecting 2775a term, so it's looking for the corresponding right angle bracket, and 2776not finding it. Chances are you left some needed parentheses out 2777earlier in the line, and you really meant a "less than". 2778 2779=item gmtime(%f) failed 2780 2781(W overflow) You called C<gmtime> with a number that it could not handle: 2782too large, too small, or NaN. The returned value is C<undef>. 2783 2784=item gmtime(%f) too large 2785 2786(W overflow) You called C<gmtime> with a number that was larger than 2787it can reliably handle and C<gmtime> probably returned the wrong 2788date. This warning is also triggered with NaN (the special 2789not-a-number value). 2790 2791=item gmtime(%f) too small 2792 2793(W overflow) You called C<gmtime> with a number that was smaller than 2794it can reliably handle and C<gmtime> probably returned the wrong date. 2795 2796=item Got an error from DosAllocMem 2797 2798(P) An error peculiar to OS/2. Most probably you're using an obsolete 2799version of Perl, and this should not happen anyway. 2800 2801=item goto must have label 2802 2803(F) Unlike with "next" or "last", you're not allowed to goto an 2804unspecified destination. See L<perlfunc/goto>. 2805 2806=item Goto undefined subroutine%s 2807 2808(F) You tried to call a subroutine with C<goto &sub> syntax, but 2809the indicated subroutine hasn't been defined, or if it was, it 2810has since been undefined. 2811 2812=item Group name must start with a non-digit word character in regex; marked by 2813S<<-- HERE> in m/%s/ 2814 2815(F) Group names must follow the rules for perl identifiers, meaning 2816they must start with a non-digit word character. A common cause of 2817this error is using (?&0) instead of (?0). See L<perlre>. 2818 2819=item ()-group starts with a count 2820 2821(F) A ()-group started with a count. A count is supposed to follow 2822something: a template character or a ()-group. See L<perlfunc/pack>. 2823 2824=item %s had compilation errors. 2825 2826(F) The final summary message when a C<perl -c> fails. 2827 2828=item Had to create %s unexpectedly 2829 2830(S internal) A routine asked for a symbol from a symbol table that ought 2831to have existed already, but for some reason it didn't, and had to be 2832created on an emergency basis to prevent a core dump. 2833 2834=item %s has too many errors 2835 2836(F) The parser has given up trying to parse the program after 10 errors. 2837Further error messages would likely be uninformative. 2838 2839=item Hexadecimal float: exponent overflow 2840 2841(W overflow) The hexadecimal floating point has a larger exponent 2842than the floating point supports. 2843 2844=item Hexadecimal float: exponent underflow 2845 2846(W overflow) The hexadecimal floating point has a smaller exponent 2847than the floating point supports. With the IEEE 754 floating point, 2848this may also mean that the subnormals (formerly known as denormals) 2849are being used, which may or may not be an error. 2850 2851=item Hexadecimal float: internal error (%s) 2852 2853(F) Something went horribly bad in hexadecimal float handling. 2854 2855=item Hexadecimal float: mantissa overflow 2856 2857(W overflow) The hexadecimal floating point literal had more bits in 2858the mantissa (the part between the 0x and the exponent, also known as 2859the fraction or the significand) than the floating point supports. 2860 2861=item Hexadecimal float: precision loss 2862 2863(W overflow) The hexadecimal floating point had internally more 2864digits than could be output. This can be caused by unsupported 2865long double formats, or by 64-bit integers not being available 2866(needed to retrieve the digits under some configurations). 2867 2868=item Hexadecimal float: unsupported long double format 2869 2870(F) You have configured Perl to use long doubles but 2871the internals of the long double format are unknown; 2872therefore the hexadecimal float output is impossible. 2873 2874=item Hexadecimal number > 0xffffffff non-portable 2875 2876(W portable) The hexadecimal number you specified is larger than 2**32-1 2877(4294967295) and therefore non-portable between systems. See 2878L<perlport> for more on portability concerns. 2879 2880=item Identifier too long 2881 2882(F) Perl limits identifiers (names for variables, functions, etc.) to 2883about 250 characters for simple names, and somewhat more for compound 2884names (like C<$A::B>). You've exceeded Perl's limits. Future versions 2885of Perl are likely to eliminate these arbitrary limitations. 2886 2887=item Ignoring zero length \N{} in character class in regex; marked by 2888S<<-- HERE> in m/%s/ 2889 2890(W regexp) Named Unicode character escapes (C<\N{...}>) may return a 2891zero-length sequence. When such an escape is used in a character 2892class its behavior is not well defined. Check that the correct 2893escape has been used, and the correct charname handler is in scope. 2894 2895=item Illegal %s digit '%c' ignored 2896 2897(W digit) Here C<%s> is one of "binary", "octal", or "hex". 2898You may have tried to use a digit other than one that is legal for the 2899given type, such as only 0 and 1 for binary. For octals, this is raised 2900only if the illegal character is an '8' or '9'. For hex, 'A' - 'F' and 2901'a' - 'f' are legal. 2902Interpretation of the number stopped just before the offending digit or 2903character. 2904 2905=item Illegal binary digit '%c' 2906 2907(F) You used a digit other than 0 or 1 in a binary number. 2908 2909=item Illegal character after '_' in prototype for %s : %s 2910 2911(W illegalproto) An illegal character was found in a prototype 2912declaration. The '_' in a prototype must be followed by a ';', 2913indicating the rest of the parameters are optional, or one of '@' 2914or '%', since those two will accept 0 or more final parameters. 2915 2916=item Illegal character \%o (carriage return) 2917 2918(F) Perl normally treats carriage returns in the program text as 2919it would any other whitespace, which means you should never see 2920this error when Perl was built using standard options. For some 2921reason, your version of Perl appears to have been built without 2922this support. Talk to your Perl administrator. 2923 2924=item Illegal character following sigil in a subroutine signature 2925 2926(F) A parameter in a subroutine signature contained an unexpected character 2927following the C<$>, C<@> or C<%> sigil character. Normally the sigil 2928should be followed by the variable name or C<=> etc. Perhaps you are 2929trying use a prototype while in the scope of C<use feature 'signatures'>? 2930For example: 2931 2932 sub foo ($$) {} # legal - a prototype 2933 2934 use feature 'signatures; 2935 sub foo ($$) {} # illegal - was expecting a signature 2936 sub foo ($x, $y) 2937 :prototype($$) {} # legal 2938 2939 2940=item Illegal character in prototype for %s : %s 2941 2942(W illegalproto) An illegal character was found in a prototype declaration. 2943Legal characters in prototypes are $, @, %, *, ;, [, ], &, \, and +. 2944Perhaps you were trying to write a subroutine signature but didn't enable 2945that feature first (C<use feature 'signatures'>), so your signature was 2946instead interpreted as a bad prototype. 2947 2948=item Illegal declaration of anonymous subroutine 2949 2950(F) When using the C<sub> keyword to construct an anonymous subroutine, 2951you must always specify a block of code. See L<perlsub>. 2952 2953=item Illegal declaration of subroutine %s 2954 2955(F) A subroutine was not declared correctly. See L<perlsub>. 2956 2957=item Illegal division by zero 2958 2959(F) You tried to divide a number by 0. Either something was wrong in 2960your logic, or you need to put a conditional in to guard against 2961meaningless input. 2962 2963=item Illegal modulus zero 2964 2965(F) You tried to divide a number by 0 to get the remainder. Most 2966numbers don't take to this kindly. 2967 2968=item Illegal number of bits in vec 2969 2970(F) The number of bits in vec() (the third argument) must be a power of 2971two from 1 to 32 (or 64, if your platform supports that). 2972 2973=item Illegal octal digit '%c' 2974 2975(F) You used an 8 or 9 in an octal number. 2976 2977=item Illegal operator following parameter in a subroutine signature 2978 2979(F) A parameter in a subroutine signature, was followed by something 2980other than C<=> introducing a default, C<,> or C<)>. 2981 2982 use feature 'signatures'; 2983 sub foo ($=1) {} # legal 2984 sub foo ($x = 1) {} # legal 2985 sub foo ($x += 1) {} # illegal 2986 sub foo ($x == 1) {} # illegal 2987 2988=item Illegal pattern in regex; marked by S<<-- HERE> in m/%s/ 2989 2990(F) You wrote something like 2991 2992 (?+foo) 2993 2994The C<"+"> is valid only when followed by digits, indicating a 2995capturing group. See 2996L<C<(?I<PARNO>)>|perlre/(?PARNO) (?-PARNO) (?+PARNO) (?R) (?0)>. 2997 2998=item Illegal suidscript 2999 3000(F) The script run under suidperl was somehow illegal. 3001 3002=item Illegal switch in PERL5OPT: -%c 3003 3004(X) The PERL5OPT environment variable may only be used to set the 3005following switches: B<-[CDIMUdmtw]>. 3006 3007=item Illegal user-defined property name 3008 3009(F) You specified a Unicode-like property name in a regular expression 3010pattern (using C<\p{}> or C<\P{}>) that Perl knows isn't an official 3011Unicode property, and was likely meant to be a user-defined property 3012name, but it can't be one of those, as they must begin with either C<In> 3013or C<Is>. Check the spelling. See also 3014L</Can't find Unicode property definition "%s">. 3015 3016=item Ill-formed CRTL environ value "%s" 3017 3018(W internal) A warning peculiar to VMS. Perl tried to read the CRTL's 3019internal environ array, and encountered an element without the C<=> 3020delimiter used to separate keys from values. The element is ignored. 3021 3022=item Ill-formed message in prime_env_iter: |%s| 3023 3024(W internal) A warning peculiar to VMS. Perl tried to read a logical 3025name or CLI symbol definition when preparing to iterate over %ENV, and 3026didn't see the expected delimiter between key and value, so the line was 3027ignored. 3028 3029=item (in cleanup) %s 3030 3031(W misc) This prefix usually indicates that a DESTROY() method raised 3032the indicated exception. Since destructors are usually called by the 3033system at arbitrary points during execution, and often a vast number of 3034times, the warning is issued only once for any number of failures that 3035would otherwise result in the same message being repeated. 3036 3037Failure of user callbacks dispatched using the C<G_KEEPERR> flag could 3038also result in this warning. See L<perlcall/G_KEEPERR>. 3039 3040=item Implicit use of @_ in %s with signatured subroutine is experimental 3041 3042(S experimental::args_array_with_signatures) An expression that implicitly 3043involves the C<@_> arguments array was found in a subroutine that uses a 3044signature. This is experimental because the interaction between the 3045arguments array and parameter handling via signatures is not guaranteed 3046to remain stable in any future version of Perl, and such code should be 3047avoided. 3048 3049=item Incomplete expression within '(?[ ])' in regex; marked by S<<-- HERE> 3050in m/%s/ 3051 3052(F) There was a syntax error within the C<(?[ ])>. This can happen if the 3053expression inside the construct was completely empty, or if there are 3054too many or few operands for the number of operators. Perl is not smart 3055enough to give you a more precise indication as to what is wrong. 3056 3057=item Inconsistent hierarchy during C3 merge of class '%s': merging failed on 3058parent '%s' 3059 3060(F) The method resolution order (MRO) of the given class is not 3061C3-consistent, and you have enabled the C3 MRO for this class. See the C3 3062documentation in L<mro> for more information. 3063 3064=item Indentation on line %d of here-doc doesn't match delimiter 3065 3066(F) You have an indented here-document where one or more of its lines 3067have whitespace at the beginning that does not match the closing 3068delimiter. 3069 3070For example, line 2 below is wrong because it does not have at least 30712 spaces, but lines 1 and 3 are fine because they have at least 2: 3072 3073 if ($something) { 3074 print <<~EOF; 3075 Line 1 3076 Line 2 not 3077 Line 3 3078 EOF 3079 } 3080 3081Note that tabs and spaces are compared strictly, meaning 1 tab will 3082not match 8 spaces. 3083 3084=item Infinite recursion in regex 3085 3086(F) You used a pattern that references itself without consuming any input 3087text. You should check the pattern to ensure that recursive patterns 3088either consume text or fail. 3089 3090=item Infinite recursion in user-defined property 3091 3092(F) A user-defined property (L<perlunicode/User-Defined Character 3093Properties>) can depend on the definitions of other user-defined 3094properties. If the chain of dependencies leads back to this property, 3095infinite recursion would occur, were it not for the check that raised 3096this error. 3097 3098Restructure your property definitions to avoid this. 3099 3100=item Infinite recursion via empty pattern 3101 3102(F) You tried to use the empty pattern inside of a regex code block, 3103for instance C</(?{ s!!! })/>, which resulted in re-executing 3104the same pattern, which is an infinite loop which is broken by 3105throwing an exception. 3106 3107=item Initialization of state variables in list currently forbidden 3108 3109(F) C<state> only permits initializing a single variable, specified 3110without parentheses. So C<state $x = 42> and C<state @x = qw(a b c)> are 3111allowed, but not C<state ($x) = 42> or C<(state $x) = 42>. To initialize 3112more than one C<state> variable, initialize them one at a time. 3113 3114=item %%s[%s] in scalar context better written as $%s[%s] 3115 3116(W syntax) In scalar context, you've used an array index/value slice 3117(indicated by %) to select a single element of an array. Generally 3118it's better to ask for a scalar value (indicated by $). The difference 3119is that C<$foo[&bar]> always behaves like a scalar, both in the value it 3120returns and when evaluating its argument, while C<%foo[&bar]> provides 3121a list context to its subscript, which can do weird things if you're 3122expecting only one subscript. When called in list context, it also 3123returns the index (what C<&bar> returns) in addition to the value. 3124 3125=item %%s{%s} in scalar context better written as $%s{%s} 3126 3127(W syntax) In scalar context, you've used a hash key/value slice 3128(indicated by %) to select a single element of a hash. Generally it's 3129better to ask for a scalar value (indicated by $). The difference 3130is that C<$foo{&bar}> always behaves like a scalar, both in the value 3131it returns and when evaluating its argument, while C<@foo{&bar}> and 3132provides a list context to its subscript, which can do weird things 3133if you're expecting only one subscript. When called in list context, 3134it also returns the key in addition to the value. 3135 3136=item Insecure dependency in %s 3137 3138(F) You tried to do something that the tainting mechanism didn't like. 3139The tainting mechanism is turned on when you're running setuid or 3140setgid, or when you specify B<-T> to turn it on explicitly. The 3141tainting mechanism labels all data that's derived directly or indirectly 3142from the user, who is considered to be unworthy of your trust. If any 3143such data is used in a "dangerous" operation, you get this error. See 3144L<perlsec> for more information. 3145 3146=item Insecure directory in %s 3147 3148(F) You can't use system(), exec(), or a piped open in a setuid or 3149setgid script if C<$ENV{PATH}> contains a directory that is writable by 3150the world. Also, the PATH must not contain any relative directory. 3151See L<perlsec>. 3152 3153=item Insecure $ENV{%s} while running %s 3154 3155(F) You can't use system(), exec(), or a piped open in a setuid or 3156setgid script if any of C<$ENV{PATH}>, C<$ENV{IFS}>, C<$ENV{CDPATH}>, 3157C<$ENV{ENV}>, C<$ENV{BASH_ENV}> or C<$ENV{TERM}> are derived from data 3158supplied (or potentially supplied) by the user. The script must set 3159the path to a known value, using trustworthy data. See L<perlsec>. 3160 3161=item Insecure user-defined property %s 3162 3163(F) Perl detected tainted data when trying to compile a regular 3164expression that contains a call to a user-defined character property 3165function, i.e. C<\p{IsFoo}> or C<\p{InFoo}>. 3166See L<perlunicode/User-Defined Character Properties> and L<perlsec>. 3167 3168=item Integer overflow in format string for %s 3169 3170(F) The indexes and widths specified in the format string of C<printf()> 3171or C<sprintf()> are too large. The numbers must not overflow the size of 3172integers for your architecture. 3173 3174=item Integer overflow in %s number 3175 3176(S overflow) The hexadecimal, octal or binary number you have specified 3177either as a literal or as an argument to hex() or oct() is too big for 3178your architecture, and has been converted to a floating point number. 3179On a 32-bit architecture the largest hexadecimal, octal or binary number 3180representable without overflow is 0xFFFFFFFF, 037777777777, or 31810b11111111111111111111111111111111 respectively. Note that Perl 3182transparently promotes all numbers to a floating point representation 3183internally--subject to loss of precision errors in subsequent 3184operations. 3185 3186=item Integer overflow in srand 3187 3188(S overflow) The number you have passed to srand is too big to fit 3189in your architecture's integer representation. The number has been 3190replaced with the largest integer supported (0xFFFFFFFF on 32-bit 3191architectures). This means you may be getting less randomness than 3192you expect, because different random seeds above the maximum will 3193return the same sequence of random numbers. 3194 3195=item Integer overflow in version 3196 3197=item Integer overflow in version %d 3198 3199(W overflow) Some portion of a version initialization is too large for 3200the size of integers for your architecture. This is not a warning 3201because there is no rational reason for a version to try and use an 3202element larger than typically 2**32. This is usually caused by trying 3203to use some odd mathematical operation as a version, like 100/9. 3204 3205=item Internal disaster in regex; marked by S<<-- HERE> in m/%s/ 3206 3207(P) Something went badly wrong in the regular expression parser. 3208The S<<-- HERE> shows whereabouts in the regular expression the problem was 3209discovered. 3210 3211=item Internal inconsistency in tracking vforks 3212 3213(S) A warning peculiar to VMS. Perl keeps track of the number of times 3214you've called C<fork> and C<exec>, to determine whether the current call 3215to C<exec> should affect the current script or a subprocess (see 3216L<perlvms/"exec LIST">). Somehow, this count has become scrambled, so 3217Perl is making a guess and treating this C<exec> as a request to 3218terminate the Perl script and execute the specified command. 3219 3220=item internal %<num>p might conflict with future printf extensions 3221 3222(S internal) Perl's internal routine that handles C<printf> and C<sprintf> 3223formatting follows a slightly different set of rules when called from 3224C or XS code. Specifically, formats consisting of digits followed 3225by "p" (e.g., "%7p") are reserved for future use. If you see this 3226message, then an XS module tried to call that routine with one such 3227reserved format. 3228 3229=item Internal urp in regex; marked by S<<-- HERE> in m/%s/ 3230 3231(P) Something went badly awry in the regular expression parser. The 3232S<<-- HERE> shows whereabouts in the regular expression the problem was 3233discovered. 3234 3235=item %s (...) interpreted as function 3236 3237(W syntax) You've run afoul of the rule that says that any list operator 3238followed by parentheses turns into a function, with all the list 3239operators arguments found inside the parentheses. See 3240L<perlop/Terms and List Operators (Leftward)>. 3241 3242=item In '(?...)', the '(' and '?' must be adjacent in regex; 3243marked by S<<-- HERE> in m/%s/ 3244 3245(F) The two-character sequence C<"(?"> in this context in a regular 3246expression pattern should be an indivisible token, with nothing 3247intervening between the C<"("> and the C<"?">, but you separated them 3248with whitespace. 3249 3250=item In '(*...)', the '(' and '*' must be adjacent in regex; 3251marked by S<<-- HERE> in m/%s/ 3252 3253(F) The two-character sequence C<"(*"> in this context in a regular 3254expression pattern should be an indivisible token, with nothing 3255intervening between the C<"("> and the C<"*">, but you separated them. 3256Fix the pattern and retry. 3257 3258=item Invalid %s attribute: %s 3259 3260(F) The indicated attribute for a subroutine or variable was not recognized 3261by Perl or by a user-supplied handler. See L<attributes>. 3262 3263=item Invalid %s attributes: %s 3264 3265(F) The indicated attributes for a subroutine or variable were not 3266recognized by Perl or by a user-supplied handler. See L<attributes>. 3267 3268=item Invalid character in charnames alias definition; marked by 3269S<<-- HERE> in '%s 3270 3271(F) You tried to create a custom alias for a character name, with 3272the C<:alias> option to C<use charnames> and the specified character in 3273the indicated name isn't valid. See L<charnames/CUSTOM ALIASES>. 3274 3275=item Invalid \0 character in %s for %s: %s\0%s 3276 3277(W syscalls) Embedded \0 characters in pathnames or other system call 3278arguments produce a warning as of 5.20. The parts after the \0 were 3279formerly ignored by system calls. 3280 3281=item Invalid character in \N{...}; marked by S<<-- HERE> in \N{%s} 3282 3283(F) Only certain characters are valid for character names. The 3284indicated one isn't. See L<charnames/CUSTOM ALIASES>. 3285 3286=item Invalid conversion in %s: "%s" 3287 3288(W printf) Perl does not understand the given format conversion. See 3289L<perlfunc/sprintf>. 3290 3291=item Invalid escape in the specified encoding in regex; marked by 3292S<<-- HERE> in m/%s/ 3293 3294(W regexp)(F) The numeric escape (for example C<\xHH>) of value < 256 3295didn't correspond to a single character through the conversion 3296from the encoding specified by the encoding pragma. 3297The escape was replaced with REPLACEMENT CHARACTER (U+FFFD) 3298instead, except within S<C<(?[ ])>>, where it is a fatal error. 3299The S<<-- HERE> shows whereabouts in the regular expression the 3300escape was discovered. 3301 3302=item Invalid hexadecimal number in \N{U+...} 3303 3304=item Invalid hexadecimal number in \N{U+...} in regex; marked by 3305S<<-- HERE> in m/%s/ 3306 3307(F) The character constant represented by C<...> is not a valid hexadecimal 3308number. Either it is empty, or you tried to use a character other than 33090 - 9 or A - F, a - f in a hexadecimal number. 3310 3311=item Invalid module name %s with -%c option: contains single ':' 3312 3313(F) The module argument to perl's B<-m> and B<-M> command-line options 3314cannot contain single colons in the module name, but only in the 3315arguments after "=". In other words, B<-MFoo::Bar=:baz> is ok, but 3316B<-MFoo:Bar=baz> is not. 3317 3318=item Invalid mro name: '%s' 3319 3320(F) You tried to C<mro::set_mro("classname", "foo")> or C<use mro 'foo'>, 3321where C<foo> is not a valid method resolution order (MRO). Currently, 3322the only valid ones supported are C<dfs> and C<c3>, unless you have loaded 3323a module that is a MRO plugin. See L<mro> and L<perlmroapi>. 3324 3325=item Invalid negative number (%s) in chr 3326 3327(W utf8) You passed a negative number to C<chr>. Negative numbers are 3328not valid character numbers, so it returns the Unicode replacement 3329character (U+FFFD). 3330 3331=item Invalid number '%s' for -C option. 3332 3333(F) You supplied a number to the -C option that either has extra leading 3334zeroes or overflows perl's unsigned integer representation. 3335 3336=item invalid option -D%c, use -D'' to see choices 3337 3338(S debugging) Perl was called with invalid debugger flags. Call perl 3339with the B<-D> option with no flags to see the list of acceptable values. 3340See also L<perlrun/-Dletters>. 3341 3342=item Invalid quantifier in {,} in regex; marked by S<<-- HERE> in m/%s/ 3343 3344(F) The pattern looks like a {min,max} quantifier, but the min or max 3345could not be parsed as a valid number - either it has leading zeroes, 3346or it represents too big a number to cope with. The S<<-- HERE> shows 3347where in the regular expression the problem was discovered. See L<perlre>. 3348 3349=item Invalid [] range "%s" in regex; marked by S<<-- HERE> in m/%s/ 3350 3351(F) The range specified in a character class had a minimum character 3352greater than the maximum character. One possibility is that you forgot the 3353C<{}> from your ending C<\x{}> - C<\x> without the curly braces can go only 3354up to C<ff>. The S<<-- HERE> shows whereabouts in the regular expression the 3355problem was discovered. See L<perlre>. 3356 3357=item Invalid range "%s" in transliteration operator 3358 3359(F) The range specified in the tr/// or y/// operator had a minimum 3360character greater than the maximum character. See L<perlop>. 3361 3362=item Invalid reference to group in regex; marked by S<<-- HERE> in m/%s/ 3363 3364(F) The capture group you specified can't possibly exist because the 3365number you used is not within the legal range of possible values for 3366this machine. 3367 3368=item Invalid separator character %s in attribute list 3369 3370(F) Something other than a colon or whitespace was seen between the 3371elements of an attribute list. If the previous attribute had a 3372parenthesised parameter list, perhaps that list was terminated too soon. 3373See L<attributes>. 3374 3375=item Invalid separator character %s in PerlIO layer specification %s 3376 3377(W layer) When pushing layers onto the Perl I/O system, something other 3378than a colon or whitespace was seen between the elements of a layer list. 3379If the previous attribute had a parenthesised parameter list, perhaps that 3380list was terminated too soon. 3381 3382=item Invalid strict version format (%s) 3383 3384(F) A version number did not meet the "strict" criteria for versions. 3385A "strict" version number is a positive decimal number (integer or 3386decimal-fraction) without exponentiation or else a dotted-decimal 3387v-string with a leading 'v' character and at least three components. 3388The parenthesized text indicates which criteria were not met. 3389See the L<version> module for more details on allowed version formats. 3390 3391=item Invalid type '%s' in %s 3392 3393(F) The given character is not a valid pack or unpack type. 3394See L<perlfunc/pack>. 3395 3396(W) The given character is not a valid pack or unpack type but used to be 3397silently ignored. 3398 3399=item Invalid version bundle "%s" 3400 3401(F) A version number that is used to specify an import bundle during a 3402C<use builtin ...> statement must be formatted as C<:MAJOR.MINOR> with an 3403optional third component, which is ignored. Each component must be a number 3404of 1 to 3 digits. No other characters are permitted. The value that was 3405specified does not conform to these rules. 3406 3407=item Invalid version format (%s) 3408 3409(F) A version number did not meet the "lax" criteria for versions. 3410A "lax" version number is a positive decimal number (integer or 3411decimal-fraction) without exponentiation or else a dotted-decimal 3412v-string. If the v-string has fewer than three components, it 3413must have a leading 'v' character. Otherwise, the leading 'v' is 3414optional. Both decimal and dotted-decimal versions may have a 3415trailing "alpha" component separated by an underscore character 3416after a fractional or dotted-decimal component. The parenthesized 3417text indicates which criteria were not met. See the L<version> module 3418for more details on allowed version formats. 3419 3420=item Invalid version object 3421 3422(F) The internal structure of the version object was invalid. 3423Perhaps the internals were modified directly in some way or 3424an arbitrary reference was blessed into the "version" class. 3425 3426=item In '(*VERB...)', the '(' and '*' must be adjacent in regex; 3427marked by S<<-- HERE> in m/%s/ 3428 3429=item Inverting a character class which contains a multi-character 3430sequence is illegal in regex; marked by <-- HERE in m/%s/ 3431 3432(F) You wrote something like 3433 3434 qr/\P{name=KATAKANA LETTER AINU P}/ 3435 qr/[^\p{name=KATAKANA LETTER AINU P}]/ 3436 3437This name actually evaluates to a sequence of two Katakana characters, 3438not just a single one, and it is illegal to try to take the complement 3439of a sequence. (Mathematically it would mean any sequence of characters 3440from 0 to infinity in length that weren't these two in a row, and that 3441is likely not of any real use.) 3442 3443(F) The two-character sequence C<"(*"> in this context in a regular 3444expression pattern should be an indivisible token, with nothing 3445intervening between the C<"("> and the C<"*">, but you separated them. 3446 3447=item ioctl is not implemented 3448 3449(F) Your machine apparently doesn't implement ioctl(), which is pretty 3450strange for a machine that supports C. 3451 3452=item ioctl() on unopened %s 3453 3454(W unopened) You tried ioctl() on a filehandle that was never opened. 3455Check your control flow and number of arguments. 3456 3457=item IO layers (like '%s') unavailable 3458 3459(F) Your Perl has not been configured to have PerlIO, and therefore 3460you cannot use IO layers. To have PerlIO, Perl must be configured 3461with 'useperlio'. 3462 3463=item IO::Socket::atmark not implemented on this architecture 3464 3465(F) Your machine doesn't implement the sockatmark() functionality, 3466neither as a system call nor an ioctl call (SIOCATMARK). 3467 3468=item '%s' is an unknown bound type in regex; marked by S<<-- HERE> in m/%s/ 3469 3470(F) You used C<\b{...}> or C<\B{...}> and the C<...> is not known to 3471Perl. The current valid ones are given in 3472L<perlrebackslash/\b{}, \b, \B{}, \B>. 3473 3474=item %s() isn't allowed on :utf8 handles 3475 3476(F) The sysread(), recv(), syswrite() and send() operators are 3477not allowed on handles that have the C<:utf8> layer, either explicitly, or 3478implicitly, eg., with the C<:encoding(UTF-16LE)> layer. 3479 3480Previously sysread() and recv() currently use only the C<:utf8> flag for the stream, 3481ignoring the actual layers. Since sysread() and recv() did no UTF-8 3482validation they can end up creating invalidly encoded scalars. 3483 3484Similarly, syswrite() and send() used only the C<:utf8> flag, otherwise ignoring 3485any layers. If the flag is set, both wrote the value UTF-8 encoded, even if 3486the layer is some different encoding, such as the example above. 3487 3488Ideally, all of these operators would completely ignore the C<:utf8> state, 3489working only with bytes, but this would result in silently breaking existing 3490code. 3491 3492=item "%s" is more clearly written simply as "%s" in regex; marked by S<<-- HERE> in m/%s/ 3493 3494(W regexp) (only under C<S<use re 'strict'>> or within C<(?[...])>) 3495 3496You specified a character that has the given plainer way of writing it, and 3497which is also portable to platforms running with different character sets. 3498 3499=item $* is no longer supported as of Perl 5.30 3500 3501(F) The special variable C<$*>, deprecated in older perls, was removed in 35025.10.0, is no longer supported and is a fatal error as of Perl 5.30. In 3503previous versions of perl the use of C<$*> enabled or disabled multi-line 3504matching within a string. 3505 3506Instead of using C<$*> you should use the C</m> (and maybe C</s>) regexp 3507modifiers. You can enable C</m> for a lexical scope (even a whole file) 3508with C<use re '/m'>. (In older versions: when C<$*> was set to a true value 3509then all regular expressions behaved as if they were written using C</m>.) 3510 3511Use of this variable will be a fatal error in Perl 5.30. 3512 3513=item $# is no longer supported as of Perl 5.30 3514 3515(F) The special variable C<$#>, deprecated in older perls, was removed as of 35165.10.0, is no longer supported and is a fatal error as of Perl 5.30. You 3517should use the printf/sprintf functions instead. 3518 3519=item '%s' is not a code reference 3520 3521(W overload) The second (fourth, sixth, ...) argument of 3522overload::constant needs to be a code reference. Either 3523an anonymous subroutine, or a reference to a subroutine. 3524 3525=item '%s' is not an overloadable type 3526 3527(W overload) You tried to overload a constant type the overload package is 3528unaware of. 3529 3530=item '%s' is not recognised as a builtin function 3531 3532(F) An attempt was made to C<use> the L<builtin> pragma module to create 3533a lexical alias for an unknown function name. 3534 3535=item -i used with no filenames on the command line, reading from STDIN 3536 3537(S inplace) The C<-i> option was passed on the command line, indicating 3538that the script is intended to edit files in place, but no files were 3539given. This is usually a mistake, since editing STDIN in place doesn't 3540make sense, and can be confusing because it can make perl look like 3541it is hanging when it is really just trying to read from STDIN. You 3542should either pass a filename to edit, or remove C<-i> from the command 3543line. See L<perlrun|perlrun/-i[extension]> for more details. 3544 3545=item Junk on end of regexp in regex m/%s/ 3546 3547(P) The regular expression parser is confused. 3548 3549=item \K not permitted in lookahead/lookbehind in regex; marked by <-- HERE in m/%s/ 3550 3551(F) Your regular expression used C<\K> in a lookahead or lookbehind 3552assertion, which currently isn't permitted. 3553 3554This may change in the future, see L<Support \K in 3555lookarounds|https://github.com/Perl/perl5/issues/18134>. 3556 3557=item Label not found for "last %s" 3558 3559(F) You named a loop to break out of, but you're not currently in a loop 3560of that name, not even if you count where you were called from. See 3561L<perlfunc/last>. 3562 3563=item Label not found for "next %s" 3564 3565(F) You named a loop to continue, but you're not currently in a loop of 3566that name, not even if you count where you were called from. See 3567L<perlfunc/last>. 3568 3569=item Label not found for "redo %s" 3570 3571(F) You named a loop to restart, but you're not currently in a loop of 3572that name, not even if you count where you were called from. See 3573L<perlfunc/last>. 3574 3575=item leaving effective %s failed 3576 3577(F) While under the C<use filetest> pragma, switching the real and 3578effective uids or gids failed. 3579 3580=item length/code after end of string in unpack 3581 3582(F) While unpacking, the string buffer was already used up when an unpack 3583length/code combination tried to obtain more data. This results in 3584an undefined value for the length. See L<perlfunc/pack>. 3585 3586=item length() used on %s (did you mean "scalar(%s)"?) 3587 3588(W syntax) You used length() on either an array or a hash when you 3589probably wanted a count of the items. 3590 3591Array size can be obtained by doing: 3592 3593 scalar(@array); 3594 3595The number of items in a hash can be obtained by doing: 3596 3597 scalar(keys %hash); 3598 3599=item Lexing code attempted to stuff non-Latin-1 character into Latin-1 input 3600 3601(F) An extension is attempting to insert text into the current parse 3602(using L<lex_stuff_pvn|perlapi/lex_stuff_pvn> or similar), but tried to insert a character that 3603couldn't be part of the current input. This is an inherent pitfall 3604of the stuffing mechanism, and one of the reasons to avoid it. Where 3605it is necessary to stuff, stuffing only plain ASCII is recommended. 3606 3607=item Lexing code internal error (%s) 3608 3609(F) Lexing code supplied by an extension violated the lexer's API in a 3610detectable way. 3611 3612=item listen() on closed socket %s 3613 3614(W closed) You tried to do a listen on a closed socket. Did you forget 3615to check the return value of your socket() call? See 3616L<perlfunc/listen>. 3617 3618=item List form of piped open not implemented 3619 3620(F) On some platforms, notably Windows, the three-or-more-arguments 3621form of C<open> does not support pipes, such as C<open($pipe, '|-', @args)>. 3622Use the two-argument C<open($pipe, '|prog arg1 arg2...')> form instead. 3623 3624=item Literal vertical space in [] is illegal except under /x in regex; 3625marked by S<<-- HERE> in m/%s/ 3626 3627(F) (only under C<S<use re 'strict'>> or within C<(?[...])>) 3628 3629Likely you forgot the C</x> modifier or there was a typo in the pattern. 3630For example, did you really mean to match a form-feed? If so, all the 3631ASCII vertical space control characters are representable by escape 3632sequences which won't present such a jarring appearance as your pattern 3633does when displayed. 3634 3635 \r carriage return 3636 \f form feed 3637 \n line feed 3638 \cK vertical tab 3639 3640=item %s: loadable library and perl binaries are mismatched (got %s handshake key %p, needed %p) 3641 3642(P) A dynamic loading library C<.so> or C<.dll> was being loaded into the 3643process that was built against a different build of perl than the 3644said library was compiled against. Reinstalling the XS module will 3645likely fix this error. 3646 3647=item Locale '%s' contains (at least) the following characters which 3648have unexpected meanings: %s The Perl program will use the expected 3649meanings 3650 3651(W locale) You are using the named UTF-8 locale. UTF-8 locales are 3652expected to have very particular behavior, which most do. This message 3653arises when perl found some departures from the expectations, and is 3654notifying you that the expected behavior overrides these differences. 3655In some cases the differences are caused by the locale definition being 3656defective, but the most common causes of this warning are when there are 3657ambiguities and conflicts in following the Standard, and the locale has 3658chosen an approach that differs from Perl's. 3659 3660One of these is because that, contrary to the claims, Unicode is not 3661completely locale insensitive. Turkish and some related languages 3662have two types of C<"I"> characters. One is dotted in both upper- and 3663lowercase, and the other is dotless in both cases. Unicode allows a 3664locale to use either the Turkish rules, or the rules used in all other 3665instances, where there is only one type of C<"I">, which is dotless in 3666the uppercase, and dotted in the lower. The perl core does not (yet) 3667handle the Turkish case, and this message warns you of that. Instead, 3668the L<Unicode::Casing> module allows you to mostly implement the Turkish 3669casing rules. 3670 3671The other common cause is for the characters 3672 3673 $ + < = > ^ ` | ~ 3674 3675These are problematic. The C standard says that these should be 3676considered punctuation in the C locale (and the POSIX standard defers to 3677the C standard), and Unicode is generally considered a superset of 3678the C locale. But Unicode has added an extra category, "Symbol", and 3679classifies these particular characters as being symbols. Most UTF-8 3680locales have them treated as punctuation, so that L<ispunct(3)> returns 3681non-zero for them. But a few locales have it return 0. Perl takes 3682the first approach, not using C<ispunct()> at all (see L<Note [5] in 3683perlrecharclass|perlrecharclass/[5]>), and this message is raised to notify you that you 3684are getting Perl's approach, not the locale's. 3685 3686=item Locale '%s' is unsupported, and may crash the interpreter 3687 3688(S locale) The named locale is not supported by Perl, and using it leads 3689to undefined behavior, including potentially crashing the computer. 3690 3691Currently the only locales that generate this severe warning are 3692non-UTF-8 ones which have characters that require more than one byte to 3693represent (common in older East Asian language locales). See 3694L<perllocale>. 3695 3696=item Locale '%s' may not work well.%s 3697 3698(W locale) You are using the named locale, which is a non-UTF-8 one, and 3699which perl has determined is not fully compatible with what it can 3700handle. The second C<%s> gives a reason. 3701 3702By far the most common reason is that the locale has characters in it 3703that are represented by more than one byte. The only such locales that 3704Perl can handle are the UTF-8 locales. Most likely the specified locale 3705is a non-UTF-8 one for an East Asian language such as Chinese or 3706Japanese. If the locale is a superset of ASCII, the ASCII portion of it 3707may work in Perl. 3708 3709Some essentially obsolete locales that aren't supersets of ASCII, mainly 3710those in ISO 646 or other 7-bit locales, such as ASMO 449, can also have 3711problems, depending on what portions of the ASCII character set get 3712changed by the locale and are also used by the program. 3713The warning message lists the determinable conflicting characters. 3714 3715Note that not all incompatibilities are found. 3716 3717If this happens to you, there's not much you can do except switch to use a 3718different locale or use L<Encode> to translate from the locale into 3719UTF-8; if that's impracticable, you have been warned that some things 3720may break. 3721 3722This message is output once each time a bad locale is switched into 3723within the scope of C<S<use locale>>, or on the first possibly-affected 3724operation if the C<S<use locale>> inherits a bad one. It is not raised 3725for any operations from the L<POSIX> module. 3726 3727=item localtime(%f) failed 3728 3729(W overflow) You called C<localtime> with a number that it could not handle: 3730too large, too small, or NaN. The returned value is C<undef>. 3731 3732=item localtime(%f) too large 3733 3734(W overflow) You called C<localtime> with a number that was larger 3735than it can reliably handle and C<localtime> probably returned the 3736wrong date. This warning is also triggered with NaN (the special 3737not-a-number value). 3738 3739=item localtime(%f) too small 3740 3741(W overflow) You called C<localtime> with a number that was smaller 3742than it can reliably handle and C<localtime> probably returned the 3743wrong date. 3744 3745=item Lookbehind longer than %d not implemented in regex m/%s/ 3746 3747(F) There is currently a limit on the length of string which lookbehind can 3748handle. This restriction may be eased in a future release. 3749 3750=item Lost precision when %s %f by 1 3751 3752(W imprecision) You attempted to increment or decrement a value by one, 3753but the result is too large for the underlying floating point 3754representation to store accurately. Hence, the target of C<++> or C<--> 3755is increased or decreased by quite different value than one, such as 3756zero (I<i.e.> the target is unchanged) or two, due to rounding. 3757Perl issues this 3758warning because it has already switched from integers to floating point 3759when values are too large for integers, and now even floating point is 3760insufficient. You may wish to switch to using L<Math::BigInt> explicitly. 3761 3762=item lstat() on filehandle%s 3763 3764(W io) You tried to do an lstat on a filehandle. What did you mean 3765by that? lstat() makes sense only on filenames. (Perl did a fstat() 3766instead on the filehandle.) 3767 3768=item lvalue attribute %s already-defined subroutine 3769 3770(W misc) Although L<attributes.pm|attributes> allows this, turning the lvalue 3771attribute on or off on a Perl subroutine that is already defined 3772does not always work properly. It may or may not do what you 3773want, depending on what code is inside the subroutine, with exact 3774details subject to change between Perl versions. Only do this 3775if you really know what you are doing. 3776 3777=item lvalue attribute ignored after the subroutine has been defined 3778 3779(W misc) Using the C<:lvalue> declarative syntax to make a Perl 3780subroutine an lvalue subroutine after it has been defined is 3781not permitted. To make the subroutine an lvalue subroutine, 3782add the lvalue attribute to the definition, or put the C<sub 3783foo :lvalue;> declaration before the definition. 3784 3785See also L<attributes.pm|attributes>. 3786 3787=item Magical list constants are not supported 3788 3789(F) You assigned a magical array to a stash element, and then tried 3790to use the subroutine from the same slot. You are asking Perl to do 3791something it cannot do, details subject to change between Perl versions. 3792 3793=item Malformed integer in [] in pack 3794 3795(F) Between the brackets enclosing a numeric repeat count only digits 3796are permitted. See L<perlfunc/pack>. 3797 3798=item Malformed integer in [] in unpack 3799 3800(F) Between the brackets enclosing a numeric repeat count only digits 3801are permitted. See L<perlfunc/pack>. 3802 3803=item Malformed PERLLIB_PREFIX 3804 3805(F) An error peculiar to OS/2. PERLLIB_PREFIX should be of the form 3806 3807 prefix1;prefix2 3808 3809or 3810 prefix1 prefix2 3811 3812with nonempty prefix1 and prefix2. If C<prefix1> is indeed a prefix of 3813a builtin library search path, prefix2 is substituted. The error may 3814appear if components are not found, or are too long. See 3815"PERLLIB_PREFIX" in L<perlos2>. 3816 3817=item Malformed prototype for %s: %s 3818 3819(F) You tried to use a function with a malformed prototype. The 3820syntax of function prototypes is given a brief compile-time check for 3821obvious errors like invalid characters. A more rigorous check is run 3822when the function is called. 3823Perhaps the function's author was trying to write a subroutine signature 3824but didn't enable that feature first (C<use feature 'signatures'>), 3825so the signature was instead interpreted as a bad prototype. 3826 3827=item Malformed UTF-8 character%s 3828 3829(S utf8)(F) Perl detected a string that should be UTF-8, but didn't 3830comply with UTF-8 encoding rules, or represents a code point whose 3831ordinal integer value doesn't fit into the word size of the current 3832platform (overflows). Details as to the exact malformation are given in 3833the variable, C<%s>, part of the message. 3834 3835One possible cause is that you set the UTF8 flag yourself for data that 3836you thought to be in UTF-8 but it wasn't (it was for example legacy 8-bit 3837data). To guard against this, you can use C<Encode::decode('UTF-8', ...)>. 3838 3839If you use the C<:encoding(UTF-8)> PerlIO layer for input, invalid byte 3840sequences are handled gracefully, but if you use C<:utf8>, the flag is set 3841without validating the data, possibly resulting in this error message. 3842 3843See also L<Encode/"Handling Malformed Data">. 3844 3845=item Malformed UTF-8 returned by \N{%s} immediately after '%s' 3846 3847(F) The charnames handler returned malformed UTF-8. 3848 3849=item Malformed UTF-8 string in "%s" 3850 3851(F) This message indicates a bug either in the Perl core or in XS 3852code. Such code was trying to find out if a character, allegedly 3853stored internally encoded as UTF-8, was of a given type, such as 3854being punctuation or a digit. But the character was not encoded 3855in legal UTF-8. The C<%s> is replaced by a string that can be used 3856by knowledgeable people to determine what the type being checked 3857against was. 3858 3859Passing malformed strings was deprecated in Perl 5.18, and 3860became fatal in Perl 5.26. 3861 3862=item Malformed UTF-8 string in '%c' format in unpack 3863 3864(F) You tried to unpack something that didn't comply with UTF-8 encoding 3865rules and perl was unable to guess how to make more progress. 3866 3867=item Malformed UTF-8 string in pack 3868 3869(F) You tried to pack something that didn't comply with UTF-8 encoding 3870rules and perl was unable to guess how to make more progress. 3871 3872=item Malformed UTF-8 string in unpack 3873 3874(F) You tried to unpack something that didn't comply with UTF-8 encoding 3875rules and perl was unable to guess how to make more progress. 3876 3877=item Malformed UTF-16 surrogate 3878 3879(F) Perl thought it was reading UTF-16 encoded character data but while 3880doing it Perl met a malformed Unicode surrogate. 3881 3882=item Mandatory parameter follows optional parameter 3883 3884(F) In a subroutine signature, you wrote something like "$x = undef, 3885$y", making an earlier parameter optional and a later one mandatory. 3886Parameters are filled from left to right, so it's impossible for the 3887caller to omit an earlier one and pass a later one. If you want to act 3888as if the parameters are filled from right to left, declare the rightmost 3889optional and then shuffle the parameters around in the subroutine's body. 3890 3891=item Matched non-Unicode code point 0x%X against Unicode property; may 3892not be portable 3893 3894(S non_unicode) Perl allows strings to contain a superset of 3895Unicode code points; each code point may be as large as what is storable 3896in a signed integer on your system, but these may not be accepted by 3897other languages/systems. This message occurs when you matched a string 3898containing such a code point against a regular expression pattern, and 3899the code point was matched against a Unicode property, C<\p{...}> or 3900C<\P{...}>. Unicode properties are only defined on Unicode code points, 3901so the result of this match is undefined by Unicode, but Perl (starting 3902in v5.20) treats non-Unicode code points as if they were typical 3903unassigned Unicode ones, and matched this one accordingly. Whether a 3904given property matches these code points or not is specified in 3905L<perluniprops/Properties accessible through \p{} and \P{}>. 3906 3907This message is suppressed (unless it has been made fatal) if it is 3908immaterial to the results of the match if the code point is Unicode or 3909not. For example, the property C<\p{ASCII_Hex_Digit}> only can match 3910the 22 characters C<[0-9A-Fa-f]>, so obviously all other code points, 3911Unicode or not, won't match it. (And C<\P{ASCII_Hex_Digit}> will match 3912every code point except these 22.) 3913 3914Getting this message indicates that the outcome of the match arguably 3915should have been the opposite of what actually happened. If you think 3916that is the case, you may wish to make the C<non_unicode> warnings 3917category fatal; if you agree with Perl's decision, you may wish to turn 3918off this category. 3919 3920See L<perlunicode/Beyond Unicode code points> for more information. 3921 3922=item %s matches null string many times in regex; marked by S<<-- HERE> in 3923m/%s/ 3924 3925(W regexp) The pattern you've specified would be an infinite loop if the 3926regular expression engine didn't specifically check for that. The S<<-- HERE> 3927shows whereabouts in the regular expression the problem was discovered. 3928See L<perlre>. 3929 3930=item Maximal count of pending signals (%u) exceeded 3931 3932(F) Perl aborted due to too high a number of signals pending. This 3933usually indicates that your operating system tried to deliver signals 3934too fast (with a very high priority), starving the perl process from 3935resources it would need to reach a point where it can process signals 3936safely. (See L<perlipc/"Deferred Signals (Safe Signals)">.) 3937 3938=item "%s" may clash with future reserved word 3939 3940(W) This warning may be due to running a perl5 script through a perl4 3941interpreter, especially if the word that is being warned about is 3942"use" or "my". 3943 3944=item '%' may not be used in pack 3945 3946(F) You can't pack a string by supplying a checksum, because the 3947checksumming process loses information, and you can't go the other way. 3948See L<perlfunc/unpack>. 3949 3950=item Method for operation %s not found in package %s during blessing 3951 3952(F) An attempt was made to specify an entry in an overloading table that 3953doesn't resolve to a valid subroutine. See L<overload>. 3954 3955=item method is experimental 3956 3957(S experimental::class) This warning is emitted if you use the C<method> 3958keyword of C<use feature 'class'>. This keyword is currently 3959experimental and its behaviour may change in future releases of Perl. 3960 3961=item Method %s not permitted 3962 3963See L</500 Server error>. 3964 3965=item Method %s redefined 3966 3967(W redefine) You redefined a method. To suppress this warning, say 3968 3969 { 3970 no warnings 'redefine'; 3971 *name = method { ... }; 3972 } 3973 3974=item Might be a runaway multi-line %s string starting on line %d 3975 3976(S) An advisory indicating that the previous error may have been caused 3977by a missing delimiter on a string or pattern, because it eventually 3978ended earlier on the current line. 3979 3980=item Mismatched brackets in template 3981 3982(F) A pack template could not be parsed because pairs of C<[...]> or 3983C<(...)> could not be matched up. See L<perlfunc/pack>. 3984 3985=item Misplaced _ in number 3986 3987(W syntax) An underscore (underbar) in a numeric constant did not 3988separate two digits. 3989 3990=item Missing argument for %n in %s 3991 3992(F) A C<%n> was used in a format string with no corresponding argument for 3993perl to write the current string length to. 3994 3995=item Missing argument in %s 3996 3997(W missing) You called a function with fewer arguments than other 3998arguments you supplied indicated would be needed. 3999 4000Currently only emitted when a printf-type format required more 4001arguments than were supplied, but might be used in the future for 4002other cases where we can statically determine that arguments to 4003functions are missing, e.g. for the L<perlfunc/pack> function. 4004 4005=item Missing argument to -%c 4006 4007(F) The argument to the indicated command line switch must follow 4008immediately after the switch, without intervening spaces. 4009 4010=item Missing braces on \N{} 4011 4012=item Missing braces on \N{} in regex; marked by S<<-- HERE> in m/%s/ 4013 4014(F) Wrong syntax of character name literal C<\N{charname}> within 4015double-quotish context. This can also happen when there is a space 4016(or comment) between the C<\N> and the C<{> in a regex with the C</x> modifier. 4017This modifier does not change the requirement that the brace immediately 4018follow the C<\N>. 4019 4020=item Missing braces on \o{} 4021 4022(F) A C<\o> must be followed immediately by a C<{> in double-quotish context. 4023 4024=item Missing comma after first argument to %s function 4025 4026(F) While certain functions allow you to specify a filehandle or an 4027"indirect object" before the argument list, this ain't one of them. 4028 4029=item Missing comma after first argument to return 4030 4031(F) While certain operators allow you to specify a filehandle or an 4032"indirect object" before the argument list, C<return> isn't one of 4033them. 4034 4035=item Missing command in piped open 4036 4037(W pipe) You used the C<open(FH, "| command")> or 4038C<open(FH, "command |")> construction, but the command was missing or 4039blank. 4040 4041=item Missing control char name in \c 4042 4043(F) A double-quoted string ended with "\c", without the required control 4044character name. 4045 4046=item Missing ']' in prototype for %s : %s 4047 4048(W illegalproto) A grouping was started with C<[> but never closed with C<]>. 4049 4050=item Missing name in "%s sub" 4051 4052(F) The syntax for lexically scoped subroutines requires that 4053they have a name with which they can be found. 4054 4055=item Missing $ on loop variable 4056 4057(F) Apparently you've been programming in B<csh> too much. Variables 4058are always mentioned with the $ in Perl, unlike in the shells, where it 4059can vary from one line to the next. 4060 4061=item (Missing operator before %s?) 4062 4063(S syntax) This is an educated guess made in conjunction with the message 4064"%s found where operator expected". Often the missing operator is a comma. 4065 4066=item Missing or undefined argument to %s 4067 4068(F) You tried to call C<require> or C<do> with no argument or with an 4069undefined value as an argument. Require expects either a package name or 4070a file-specification as an argument; do expects a filename. See 4071L<perlfunc/require EXPR> and L<perlfunc/do EXPR>. 4072 4073=item Missing or undefined argument to %s via %{^HOOK}{require__before} 4074 4075(F) A C<%{^HOOK}{require__before}> hook rewrote the name of the file being 4076compiled with C<require> or C<do> with an empty string an undefined value 4077which is forbidden. See L<perlvar/%{^HOOK}> and L<perlfunc/require EXPR>. 4078 4079=item Missing right brace on \%c{} in regex; marked by S<<-- HERE> in m/%s/ 4080 4081(F) Missing right brace in C<\x{...}>, C<\p{...}>, C<\P{...}>, or C<\N{...}>. 4082 4083=item Missing right brace on \N{} 4084 4085=item Missing right brace on \N{} or unescaped left brace after \N 4086 4087(F) C<\N> has two meanings. 4088 4089The traditional one has it followed by a name enclosed in braces, 4090meaning the character (or sequence of characters) given by that 4091name. Thus C<\N{ASTERISK}> is another way of writing C<*>, valid in both 4092double-quoted strings and regular expression patterns. In patterns, 4093it doesn't have the meaning an unescaped C<*> does. 4094 4095Starting in Perl 5.12.0, C<\N> also can have an additional meaning (only) 4096in patterns, namely to match a non-newline character. (This is short 4097for C<[^\n]>, and like C<.> but is not affected by the C</s> regex modifier.) 4098 4099This can lead to some ambiguities. When C<\N> is not followed immediately 4100by a left brace, Perl assumes the C<[^\n]> meaning. Also, if the braces 4101form a valid quantifier such as C<\N{3}> or C<\N{5,}>, Perl assumes that this 4102means to match the given quantity of non-newlines (in these examples, 41033; and 5 or more, respectively). In all other case, where there is a 4104C<\N{> and a matching C<}>, Perl assumes that a character name is desired. 4105 4106However, if there is no matching C<}>, Perl doesn't know if it was 4107mistakenly omitted, or if C<[^\n]{> was desired, and raises this error. 4108If you meant the former, add the right brace; if you meant the latter, 4109escape the brace with a backslash, like so: C<\N\{> 4110 4111=item Missing right curly or square bracket 4112 4113(F) The lexer counted more opening curly or square brackets than closing 4114ones. As a general rule, you'll find it's missing near the place you 4115were last editing. 4116 4117=item (Missing semicolon on previous line?) 4118 4119(S syntax) This is an educated guess made in conjunction with the message 4120"%s found where operator expected". Don't automatically put a semicolon on 4121the previous line just because you saw this message. 4122 4123=item Modification of a read-only value attempted 4124 4125(F) You tried, directly or indirectly, to change the value of a 4126constant. You didn't, of course, try "2 = 1", because the compiler 4127catches that. But an easy way to do the same thing is: 4128 4129 sub mod { $_[0] = 1 } 4130 mod(2); 4131 4132Another way is to assign to a substr() that's off the end of the string. 4133 4134Yet another way is to assign to a C<foreach> loop I<VAR> when I<VAR> 4135is aliased to a constant in the look I<LIST>: 4136 4137 $x = 1; 4138 foreach my $n ($x, 2) { 4139 $n *= 2; # modifies the $x, but fails on attempt to 4140 } # modify the 2 4141 4142L<PerlIO::scalar> will also produce this message as a warning if you 4143attempt to open a read-only scalar for writing. 4144 4145=item Modification of non-creatable array value attempted, %s 4146 4147(F) You tried to make an array value spring into existence, and the 4148subscript was probably negative, even counting from end of the array 4149backwards. 4150 4151=item Modification of non-creatable hash value attempted, %s 4152 4153(P) You tried to make a hash value spring into existence, and it 4154couldn't be created for some peculiar reason. 4155 4156=item Module name must be constant 4157 4158(F) Only a bare module name is allowed as the first argument to a "use". 4159 4160=item Module name required with -%c option 4161 4162(F) The C<-M> or C<-m> options say that Perl should load some module, but 4163you omitted the name of the module. Consult 4164L<perlrun|perlrun/-m[-]module> for full details about C<-M> and C<-m>. 4165 4166=item More than one argument to '%s' open 4167 4168(F) The C<open> function has been asked to open multiple files. This 4169can happen if you are trying to open a pipe to a command that takes a 4170list of arguments, but have forgotten to specify a piped open mode. 4171See L<perlfunc/open> for details. 4172 4173=item mprotect for COW string %p %u failed with %d 4174 4175(S) You compiled perl with B<-D>PERL_DEBUG_READONLY_COW (see 4176L<perlguts/"Copy on Write">), but a shared string buffer 4177could not be made read-only. 4178 4179=item mprotect for %p %u failed with %d 4180 4181(S) You compiled perl with B<-D>PERL_DEBUG_READONLY_OPS (see L<perlhacktips>), 4182but an op tree could not be made read-only. 4183 4184=item mprotect RW for COW string %p %u failed with %d 4185 4186(S) You compiled perl with B<-D>PERL_DEBUG_READONLY_COW (see 4187L<perlguts/"Copy on Write">), but a read-only shared string 4188buffer could not be made mutable. 4189 4190=item mprotect RW for %p %u failed with %d 4191 4192(S) You compiled perl with B<-D>PERL_DEBUG_READONLY_OPS (see 4193L<perlhacktips>), but a read-only op tree could not be made 4194mutable before freeing the ops. 4195 4196=item msg%s not implemented 4197 4198(F) You don't have System V message IPC on your system. 4199 4200=item Multidimensional hash lookup is disabled 4201 4202(F) You supplied a list of subscripts to a hash lookup under 4203C<< no feature "multidimensional"; >>, eg: 4204 4205 $z = $foo{$x, $y}; 4206 4207which by default acts like: 4208 4209 $z = $foo{join($;, $x, $y)}; 4210 4211=item Multidimensional syntax %s not supported 4212 4213(W syntax) Multidimensional arrays aren't written like C<$foo[1,2,3]>. 4214They're written like C<$foo[1][2][3]>, as in C. 4215 4216=item Multiple slurpy parameters not allowed 4217 4218(F) In subroutine signatures, a slurpy parameter (C<@> or C<%>) must be 4219the last parameter, and there must not be more than one of them; for 4220example: 4221 4222 sub foo ($x, @y) {} # legal 4223 sub foo ($x, @y, %) {} # invalid 4224 4225=item '/' must follow a numeric type in unpack 4226 4227(F) You had an unpack template that contained a '/', but this did not 4228follow some unpack specification producing a numeric value. 4229See L<perlfunc/pack>. 4230 4231=item %s must not be a named sequence in transliteration operator 4232 4233(F) Transliteration (C<tr///> and C<y///>) transliterates individual 4234characters. But a named sequence by definition is more than an 4235individual character, and hence doing this operation on it doesn't make 4236sense. 4237 4238=item "my sub" not yet implemented 4239 4240(F) Lexically scoped subroutines are not yet implemented. Don't try 4241that yet. 4242 4243=item "my" subroutine %s can't be in a package 4244 4245(F) Lexically scoped subroutines aren't in a package, so it doesn't make 4246sense to try to declare one with a package qualifier on the front. 4247 4248=item "my %s" used in sort comparison 4249 4250(W syntax) The package variables $a and $b are used for sort comparisons. 4251You used $a or $b in as an operand to the C<< <=> >> or C<cmp> operator inside a 4252sort comparison block, and the variable had earlier been declared as a 4253lexical variable. Either qualify the sort variable with the package 4254name, or rename the lexical variable. 4255 4256=item "my" variable %s can't be in a package 4257 4258(F) Lexically scoped variables aren't in a package, so it doesn't make 4259sense to try to declare one with a package qualifier on the front. Use 4260local() if you want to localize a package variable. 4261 4262=item Name "%s::%s" used only once: possible typo 4263 4264(W once) Typographical errors often show up as unique variable 4265names. If you had a good reason for having a unique name, then 4266just mention it again somehow to suppress the message. The C<our> 4267declaration is also provided for this purpose. 4268 4269NOTE: This warning detects package symbols that have been used 4270only once. This means lexical variables will never trigger this 4271warning. It also means that all of the package variables $c, @c, 4272%c, as well as *c, &c, sub c{}, c(), and c (the filehandle or 4273format) are considered the same; if a program uses $c only once 4274but also uses any of the others it will not trigger this warning. 4275Symbols beginning with an underscore and symbols using special 4276identifiers (q.v. L<perldata>) are exempt from this warning. 4277 4278=item Need exactly 3 octal digits in regex; marked by S<<-- HERE> in m/%s/ 4279 4280(F) Within S<C<(?[ ])>>, all constants interpreted as octal need to be 4281exactly 3 digits long. This helps catch some ambiguities. If your 4282constant is too short, add leading zeros, like 4283 4284 (?[ [ \078 ] ]) # Syntax error! 4285 (?[ [ \0078 ] ]) # Works 4286 (?[ [ \007 8 ] ]) # Clearer 4287 4288The maximum number this construct can express is C<\777>. If you 4289need a larger one, you need to use L<\o{}|perlrebackslash/Octal escapes> instead. If you meant 4290two separate things, you need to separate them: 4291 4292 (?[ [ \7776 ] ]) # Syntax error! 4293 (?[ [ \o{7776} ] ]) # One meaning 4294 (?[ [ \777 6 ] ]) # Another meaning 4295 (?[ [ \777 \006 ] ]) # Still another 4296 4297=item Negative '/' count in unpack 4298 4299(F) The length count obtained from a length/code unpack operation was 4300negative. See L<perlfunc/pack>. 4301 4302=item Negative length 4303 4304(F) You tried to do a read/write/send/recv operation with a buffer 4305length that is less than 0. This is difficult to imagine. 4306 4307=item Negative offset to vec in lvalue context 4308 4309(F) When C<vec> is called in an lvalue context, the second argument must be 4310greater than or equal to zero. 4311 4312=item Negative repeat count does nothing 4313 4314(W numeric) You tried to execute the 4315L<C<x>|perlop/Multiplicative Operators> repetition operator fewer than 0 4316times, which doesn't make sense. 4317 4318=item Nested quantifiers in regex; marked by S<<-- HERE> in m/%s/ 4319 4320(F) You can't quantify a quantifier without intervening parentheses. 4321So things like ** or +* or ?* are illegal. The S<<-- HERE> shows 4322whereabouts in the regular expression the problem was discovered. 4323 4324Note that the minimal matching quantifiers, C<*?>, C<+?>, and 4325C<??> appear to be nested quantifiers, but aren't. See L<perlre>. 4326 4327=item %s never introduced 4328 4329(S internal) The symbol in question was declared but somehow went out of 4330scope before it could possibly have been used. 4331 4332=item next::method/next::can/maybe::next::method cannot find enclosing method 4333 4334(F) C<next::method> needs to be called within the context of a 4335real method in a real package, and it could not find such a context. 4336See L<mro>. 4337 4338=item \N in a character class must be a named character: \N{...} in regex; 4339marked by S<<-- HERE> in m/%s/ 4340 4341(F) The new (as of Perl 5.12) meaning of C<\N> as C<[^\n]> is not valid in a 4342bracketed character class, for the same reason that C<.> in a character 4343class loses its specialness: it matches almost everything, which is 4344probably not what you want. 4345 4346=item \N{} here is restricted to one character in regex; marked by <-- HERE in m/%s/ 4347 4348(F) Named Unicode character escapes (C<\N{...}>) may return a 4349multi-character sequence. Even though a character class is 4350supposed to match just one character of input, perl will match the 4351whole thing correctly, except under certain conditions. These currently 4352are 4353 4354=over 4 4355 4356=item When the class is inverted (C<[^...]>) 4357 4358The mathematically logical behavior for what matches when inverting 4359is very different from what people expect, so we have decided to 4360forbid it. 4361 4362=item The escape is the beginning or final end point of a range 4363 4364Similarly unclear is what should be generated when the 4365C<\N{...}> is used as one of the end points of the range, such as in 4366 4367 [\x{41}-\N{ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH AE}] 4368 4369What is meant here is unclear, as the C<\N{...}> escape is a sequence 4370of code points, so this is made an error. 4371 4372=item In a regex set 4373 4374The syntax S<C<(?[ ])>> in a regular expression yields a list of 4375single code points, none can be a sequence. 4376 4377=back 4378 4379=item No %s allowed while running setuid 4380 4381(F) Certain operations are deemed to be too insecure for a setuid or 4382setgid script to even be allowed to attempt. Generally speaking there 4383will be another way to do what you want that is, if not secure, at least 4384securable. See L<perlsec>. 4385 4386=item No code specified for -%c 4387 4388(F) Perl's B<-e> and B<-E> command-line options require an argument. If 4389you want to run an empty program, pass the empty string as a separate 4390argument or run a program consisting of a single 0 or 1: 4391 4392 perl -e "" 4393 perl -e0 4394 perl -e1 4395 4396=item No comma allowed after %s 4397 4398(F) A list operator that has a filehandle or "indirect object" is 4399not allowed to have a comma between that and the following arguments. 4400Otherwise it'd be just another one of the arguments. 4401 4402One possible cause for this is that you expected to have imported 4403a constant to your name space with B<use> or B<import> while no such 4404importing took place, it may for example be that your operating 4405system does not support that particular constant. Hopefully you did 4406use an explicit import list for the constants you expect to see; 4407please see L<perlfunc/use> and L<perlfunc/import>. While an 4408explicit import list would probably have caught this error earlier 4409it naturally does not remedy the fact that your operating system 4410still does not support that constant. Maybe you have a typo in 4411the constants of the symbol import list of B<use> or B<import> or in the 4412constant name at the line where this error was triggered? 4413 4414=item No command into which to pipe on command line 4415 4416(F) An error peculiar to VMS. Perl handles its own command line 4417redirection, and found a '|' at the end of the command line, so it 4418doesn't know where you want to pipe the output from this command. 4419 4420=item No DB::DB routine defined 4421 4422(F) The currently executing code was compiled with the B<-d> switch, but 4423for some reason the current debugger (e.g. F<perl5db.pl> or a C<Devel::> 4424module) didn't define a routine to be called at the beginning of each 4425statement. 4426 4427=item No dbm on this machine 4428 4429(P) This is counted as an internal error, because every machine should 4430supply dbm nowadays, because Perl comes with SDBM. See L<SDBM_File>. 4431 4432=item No DB::sub routine defined 4433 4434(F) The currently executing code was compiled with the B<-d> switch, but 4435for some reason the current debugger (e.g. F<perl5db.pl> or a C<Devel::> 4436module) didn't define a C<DB::sub> routine to be called at the beginning 4437of each ordinary subroutine call. 4438 4439=item No digits found for %s literal 4440 4441(F) No hexadecimal digits were found following C<0x> or no binary digits 4442were found following C<0b>. 4443 4444=item No directory specified for -I 4445 4446(F) The B<-I> command-line switch requires a directory name as part of the 4447I<same> argument. Use B<-Ilib>, for instance. B<-I lib> won't work. 4448 4449=item No error file after 2> or 2>> on command line 4450 4451(F) An error peculiar to VMS. Perl handles its own command line 4452redirection, and found a '2>' or a '2>>' on the command line, but can't 4453find the name of the file to which to write data destined for stderr. 4454 4455=item No group ending character '%c' found in template 4456 4457(F) A pack or unpack template has an opening '(' or '[' without its 4458matching counterpart. See L<perlfunc/pack>. 4459 4460=item No input file after < on command line 4461 4462(F) An error peculiar to VMS. Perl handles its own command line 4463redirection, and found a '<' on the command line, but can't find the 4464name of the file from which to read data for stdin. 4465 4466=item No next::method '%s' found for %s 4467 4468(F) C<next::method> found no further instances of this method name 4469in the remaining packages of the MRO of this class. If you don't want 4470it throwing an exception, use C<maybe::next::method> 4471or C<next::can>. See L<mro>. 4472 4473=item Non-finite repeat count does nothing 4474 4475(W numeric) You tried to execute the 4476L<C<x>|perlop/Multiplicative Operators> repetition operator C<Inf> (or 4477C<-Inf>) or C<NaN> times, which doesn't make sense. 4478 4479=item Non-hex character in regex; marked by S<<-- HERE> in m/%s/ 4480 4481(F) In a regular expression, there was a non-hexadecimal character where 4482a hex one was expected, like 4483 4484 (?[ [ \xDG ] ]) 4485 (?[ [ \x{DEKA} ] ]) 4486 4487=item Non-hex character '%c' terminates \x early. Resolved as "%s" 4488 4489(W digit) In parsing a hexadecimal numeric constant, a character was 4490unexpectedly encountered that isn't hexadecimal. The resulting value 4491is as indicated. 4492 4493Note that, within braces, every character starting with the first 4494non-hexadecimal up to the ending brace is ignored. 4495 4496=item Non-octal character in regex; marked by S<<-- HERE> in m/%s/ 4497 4498(F) In a regular expression, there was a non-octal character where 4499an octal one was expected, like 4500 4501 (?[ [ \o{1278} ] ]) 4502 4503=item Non-octal character '%c' terminates \o early. Resolved as "%s" 4504 4505(W digit) In parsing an octal numeric constant, a character was 4506unexpectedly encountered that isn't octal. The resulting value 4507is as indicated. 4508 4509When not using C<\o{...}>, you wrote something like C<\08>, or C<\179> 4510in a double-quotish string. The resolution is as indicated, with all 4511but the last digit treated as a single character, specified in octal. 4512The last digit is the next character in the string. To tell Perl that 4513this is indeed what you want, you can use the C<\o{ }> syntax, or use 4514exactly three digits to specify the octal for the character. 4515 4516Note that, within braces, every character starting with the first 4517non-octal up to the ending brace is ignored. 4518 4519=item "no" not allowed in expression 4520 4521(F) The "no" keyword is recognized and executed at compile time, and 4522returns no useful value. See L<perlmod>. 4523 4524=item Non-string passed as bitmask 4525 4526(W misc) A number has been passed as a bitmask argument to select(). 4527Use the vec() function to construct the file descriptor bitmasks for 4528select. See L<perlfunc/select>. 4529 4530=item No output file after > on command line 4531 4532(F) An error peculiar to VMS. Perl handles its own command line 4533redirection, and found a lone '>' at the end of the command line, so it 4534doesn't know where you wanted to redirect stdout. 4535 4536=item No output file after > or >> on command line 4537 4538(F) An error peculiar to VMS. Perl handles its own command line 4539redirection, and found a '>' or a '>>' on the command line, but can't 4540find the name of the file to which to write data destined for stdout. 4541 4542=item No package name allowed for subroutine %s in "our" 4543 4544=item No package name allowed for variable %s in "our" 4545 4546(F) Fully qualified subroutine and variable names are not allowed in "our" 4547declarations, because that doesn't make much sense under existing rules. 4548Such syntax is reserved for future extensions. 4549 4550=item No Perl script found in input 4551 4552(F) You called C<perl -x>, but no line was found in the file beginning 4553with #! and containing the word "perl". 4554 4555=item No setregid available 4556 4557(F) Configure didn't find anything resembling the setregid() call for 4558your system. 4559 4560=item No setreuid available 4561 4562(F) Configure didn't find anything resembling the setreuid() call for 4563your system. 4564 4565=item No such class %s 4566 4567(F) You provided a class qualifier in a "my", "our" or "state" 4568declaration, but this class doesn't exist at this point in your program. 4569 4570=item No such class field "%s" in variable %s of type %s 4571 4572(F) You tried to access a key from a hash through the indicated typed 4573variable but that key is not allowed by the package of the same type. 4574The indicated package has restricted the set of allowed keys using the 4575L<fields> pragma. 4576 4577=item No such hook: %s 4578 4579(F) You specified a signal hook that was not recognized by Perl. 4580Currently, Perl accepts C<__DIE__> and C<__WARN__> as valid signal hooks. 4581 4582=item No such pipe open 4583 4584(P) An error peculiar to VMS. The internal routine my_pclose() tried to 4585close a pipe which hadn't been opened. This should have been caught 4586earlier as an attempt to close an unopened filehandle. 4587 4588=item No such signal: SIG%s 4589 4590(W signal) You specified a signal name as a subscript to %SIG that was 4591not recognized. Say C<kill -l> in your shell to see the valid signal 4592names on your system. 4593 4594=item No Unicode property value wildcard matches: 4595 4596(W regexp) You specified a wildcard for a Unicode property value, but 4597there is no property value in the current Unicode release that matches 4598it. Check your spelling. 4599 4600=item Not a CODE reference 4601 4602(F) Perl was trying to evaluate a reference to a code value (that is, a 4603subroutine), but found a reference to something else instead. You can 4604use the ref() function to find out what kind of ref it really was. See 4605also L<perlref>. 4606 4607=item Not a GLOB reference 4608 4609(F) Perl was trying to evaluate a reference to a "typeglob" (that is, a 4610symbol table entry that looks like C<*foo>), but found a reference to 4611something else instead. You can use the ref() function to find out what 4612kind of ref it really was. See L<perlref>. 4613 4614=item Not a HASH reference 4615 4616(F) Perl was trying to evaluate a reference to a hash value, but found a 4617reference to something else instead. You can use the ref() function to 4618find out what kind of ref it really was. See L<perlref>. 4619 4620=item '#' not allowed immediately following a sigil in a subroutine signature 4621 4622(F) In a subroutine signature definition, a comment following a sigil 4623(C<$>, C<@> or C<%>), needs to be separated by whitespace or a comma etc., in 4624particular to avoid confusion with the C<$#> variable. For example: 4625 4626 # bad 4627 sub f ($# ignore first arg 4628 , $y) {} 4629 # good 4630 sub f ($, # ignore first arg 4631 $y) {} 4632 4633=item Not an ARRAY reference 4634 4635(F) Perl was trying to evaluate a reference to an array value, but found 4636a reference to something else instead. You can use the ref() function 4637to find out what kind of ref it really was. See L<perlref>. 4638 4639=item Not a SCALAR reference 4640 4641(F) Perl was trying to evaluate a reference to a scalar value, but found 4642a reference to something else instead. You can use the ref() function 4643to find out what kind of ref it really was. See L<perlref>. 4644 4645=item Not a subroutine reference 4646 4647(F) Perl was trying to evaluate a reference to a code value (that is, a 4648subroutine), but found a reference to something else instead. You can 4649use the ref() function to find out what kind of ref it really was. See 4650also L<perlref>. 4651 4652=item Not a subroutine reference in overload table 4653 4654(F) An attempt was made to specify an entry in an overloading table that 4655doesn't somehow point to a valid subroutine. See L<overload>. 4656 4657=item Not enough arguments for %s 4658 4659(F) The function requires more arguments than you specified. 4660 4661=item Not enough format arguments 4662 4663(W syntax) A format specified more picture fields than the next line 4664supplied. See L<perlform>. 4665 4666=item %s: not found 4667 4668(A) You've accidentally run your script through the Bourne shell instead 4669of Perl. Check the #! line, or manually feed your script into Perl 4670yourself. 4671 4672=item no UTC offset information; assuming local time is UTC 4673 4674(S) A warning peculiar to VMS. Perl was unable to find the local 4675timezone offset, so it's assuming that local system time is equivalent 4676to UTC. If it's not, define the logical name 4677F<SYS$TIMEZONE_DIFFERENTIAL> to translate to the number of seconds which 4678need to be added to UTC to get local time. 4679 4680=item NULL OP IN RUN 4681 4682(S debugging) Some internal routine called run() with a null opcode 4683pointer. 4684 4685=item Null picture in formline 4686 4687(F) The first argument to formline must be a valid format picture 4688specification. It was found to be empty, which probably means you 4689supplied it an uninitialized value. See L<perlform>. 4690 4691=item NULL regexp parameter 4692 4693(P) The internal pattern matching routines are out of their gourd. 4694 4695=item Number too long 4696 4697(F) Perl limits the representation of decimal numbers in programs to 4698about 250 characters. You've exceeded that length. Future 4699versions of Perl are likely to eliminate this arbitrary limitation. In 4700the meantime, try using scientific notation (e.g. "1e6" instead of 4701"1_000_000"). 4702 4703=item Number with no digits 4704 4705(F) Perl was looking for a number but found nothing that looked like 4706a number. This happens, for example with C<\o{}>, with no number between 4707the braces. 4708 4709=item Numeric format result too large 4710 4711(F) The length of the result of a numeric format supplied to sprintf() 4712or printf() would have been too large for the underlying C function to 4713report. This limit is typically 2GB. 4714 4715=item Numeric variables with more than one digit may not start with '0' 4716 4717(F) The only numeric variable which is allowed to start with a 0 is C<$0>, 4718and you mentioned a variable that starts with 0 that has more than one 4719digit. You probably want to remove the leading 0, or if the intent was 4720to express a variable name in octal you should convert to decimal. 4721 4722=item Octal number > 037777777777 non-portable 4723 4724(W portable) The octal number you specified is larger than 2**32-1 4725(4294967295) and therefore non-portable between systems. See 4726L<perlport> for more on portability concerns. 4727 4728=item Odd name/value argument for subroutine '%s' 4729 4730(F) A subroutine using a slurpy hash parameter in its signature 4731received an odd number of arguments to populate the hash. It requires 4732the arguments to be paired, with the same number of keys as values. 4733The caller of the subroutine is presumably at fault. 4734 4735The message attempts to include the name of the called subroutine. If the 4736subroutine has been aliased, the subroutine's original name will be shown, 4737regardless of what name the caller used. 4738 4739=item Odd number of arguments for overload::constant 4740 4741(W overload) The call to overload::constant contained an odd number of 4742arguments. The arguments should come in pairs. 4743 4744=item Odd number of arguments passed to "%s" constructor 4745 4746(S) The constructor for the given class was called with an odd 4747number of arguments. 4748 4749Class constructors accept named arguments as a list and expect pairs 4750of name followed by value as if you were initialising a hash. 4751 4752=item Odd number of elements in anonymous hash 4753 4754(W misc) You specified an odd number of elements to initialize a hash, 4755which is odd, because hashes come in key/value pairs. 4756 4757=item Odd number of elements in export_lexically 4758 4759(F) A call to L<builtin/export_lexically> contained an odd number of 4760arguments. This is not permitted, because each name must be paired with a 4761valid reference value. 4762 4763=item Odd number of elements in hash assignment 4764 4765(W misc) You specified an odd number of elements to initialize a hash, 4766which is odd, because hashes come in key/value pairs. 4767 4768=item Odd number of elements in hash field initialization 4769 4770(W misc) You specified an odd number of elements to initialise a hash 4771field of an object. Hashes are initialised from a list of key/value 4772pairs so there must be a corresponding value to every key. The final 4773missing value will be filled in with undef instead. 4774 4775=item Offset outside string 4776 4777(W layer) You tried to do a read/write/send/recv/seek operation 4778with an offset pointing outside the buffer. This is difficult to 4779imagine. The sole exceptions to this are that zero padding will 4780take place when going past the end of the string when either 4781C<sysread()>ing a file, or when seeking past the end of a scalar opened 4782for I/O (in anticipation of future reads and to imitate the behavior 4783with real files). 4784 4785=item Old package separator "'" deprecated 4786 4787(D deprecated::apostrophe_as_package_separator, syntax) You used the old package 4788separator "'" in a variable, subroutine or package name. Support for the 4789old package separator will be removed in Perl 5.42. 4790 4791=item Old package separator used in string 4792 4793(D deprecated::apostrophe_as_package_separator, syntax) You used the old package 4794separator, "'", in a variable named inside a double-quoted string; e.g., 4795C<"In $name's house">. This is equivalent to C<"In $name::s house">. If 4796you meant the former, put a backslash before the apostrophe 4797(C<"In $name\'s house">). 4798 4799Support for the old package separator will be removed in Perl 5.42. 4800 4801=item Only scalar fields can take a :param attribute 4802 4803(F) You tried to apply the C<:param> attribute to an array or hash field. 4804Currently this is not permitted. 4805 4806=item %s() on unopened %s 4807 4808(W unopened) An I/O operation was attempted on a filehandle that was 4809never initialized. You need to do an open(), a sysopen(), or a socket() 4810call, or call a constructor from the FileHandle package. 4811 4812=item -%s on unopened filehandle %s 4813 4814(W unopened) You tried to invoke a file test operator on a filehandle 4815that isn't open. Check your control flow. See also L<perlfunc/-X>. 4816 4817=item oops: oopsAV 4818 4819(S internal) An internal warning that the grammar is screwed up. 4820 4821=item oops: oopsHV 4822 4823(S internal) An internal warning that the grammar is screwed up. 4824 4825=item Operand with no preceding operator in regex; marked by S<<-- HERE> in 4826m/%s/ 4827 4828(F) You wrote something like 4829 4830 (?[ \p{Digit} \p{Thai} ]) 4831 4832There are two operands, but no operator giving how you want to combine 4833them. 4834 4835=item Operation "%s": no method found, %s 4836 4837(F) An attempt was made to perform an overloaded operation for which no 4838handler was defined. While some handlers can be autogenerated in terms 4839of other handlers, there is no default handler for any operation, unless 4840the C<fallback> overloading key is specified to be true. See L<overload>. 4841 4842=item Operation "%s" returns its argument for non-Unicode code point 0x%X 4843 4844(S non_unicode) You performed an operation requiring Unicode rules 4845on a code point that is not in Unicode, so what it should do is not 4846defined. Perl has chosen to have it do nothing, and warn you. 4847 4848If the operation shown is "ToFold", it means that case-insensitive 4849matching in a regular expression was done on the code point. 4850 4851If you know what you are doing you can turn off this warning by 4852C<no warnings 'non_unicode';>. 4853 4854=item Operation "%s" returns its argument for UTF-16 surrogate U+%X 4855 4856(S surrogate) You performed an operation requiring Unicode 4857rules on a Unicode surrogate. Unicode frowns upon the use 4858of surrogates for anything but storing strings in UTF-16, but 4859rules are (reluctantly) defined for the surrogates, and 4860they are to do nothing for this operation. Because the use of 4861surrogates can be dangerous, Perl warns. 4862 4863If the operation shown is "ToFold", it means that case-insensitive 4864matching in a regular expression was done on the code point. 4865 4866If you know what you are doing you can turn off this warning by 4867C<no warnings 'surrogate';>. 4868 4869=item Operator or semicolon missing before %s 4870 4871(S ambiguous) You used a variable or subroutine call where the parser 4872was expecting an operator. The parser has assumed you really meant to 4873use an operator, but this is highly likely to be incorrect. For 4874example, if you say "*foo *foo" it will be interpreted as if you said 4875"*foo * 'foo'". 4876 4877=item Optional parameter lacks default expression 4878 4879(F) In a subroutine signature, you wrote something like "$x =", making a 4880named optional parameter without a default value. A nameless optional 4881parameter is permitted to have no default value, but a named one must 4882have a specific default. You probably want "$x = undef". 4883 4884=item "our" variable %s redeclared 4885 4886(W shadow) You seem to have already declared the same global once before 4887in the current lexical scope. 4888 4889=item Out of memory! 4890 4891(X) The malloc() function returned 0, indicating there was insufficient 4892remaining memory (or virtual memory) to satisfy the request. Perl has 4893no option but to exit immediately. 4894 4895At least in Unix you may be able to get past this by increasing your 4896process datasize limits: in csh/tcsh use C<limit> and 4897C<limit datasize n> (where C<n> is the number of kilobytes) to check 4898the current limits and change them, and in ksh/bash/zsh use C<ulimit -a> 4899and C<ulimit -d n>, respectively. 4900 4901=item Out of memory during %s extend 4902 4903(X) An attempt was made to extend an array, a list, or a string beyond 4904the largest possible memory allocation. 4905 4906=item Out of memory during "large" request for %s 4907 4908(F) The malloc() function returned 0, indicating there was insufficient 4909remaining memory (or virtual memory) to satisfy the request. However, 4910the request was judged large enough (compile-time default is 64K), so a 4911possibility to shut down by trapping this error is granted. 4912 4913=item Out of memory during request for %s 4914 4915(X)(F) The malloc() function returned 0, indicating there was 4916insufficient remaining memory (or virtual memory) to satisfy the 4917request. 4918 4919The request was judged to be small, so the possibility to trap it 4920depends on the way perl was compiled. By default it is not trappable. 4921However, if compiled for this, Perl may use the contents of C<$^M> as an 4922emergency pool after die()ing with this message. In this case the error 4923is trappable I<once>, and the error message will include the line and file 4924where the failed request happened. 4925 4926=item Out of memory during ridiculously large request 4927 4928(F) You can't allocate more than 2^31+"small amount" bytes. This error 4929is most likely to be caused by a typo in the Perl program. e.g., 4930C<$arr[time]> instead of C<$arr[$time]>. 4931 4932=item Out of memory during vec in lvalue context 4933 4934(F) An attempt was made to extend a string beyond the largest possible memory 4935allocation by assigning to C<vec()> called with a large second argument. 4936 4937=item Out of memory for yacc stack 4938 4939(F) The yacc parser wanted to grow its stack so it could continue 4940parsing, but realloc() wouldn't give it more memory, virtual or 4941otherwise. 4942 4943=item Out of memory in perl:%s 4944 4945(X) A low-level memory allocation routine failed, indicating there was 4946insufficient remaining (virtual) memory to satisfy the request. Perl has no 4947option but to exit immediately. 4948 4949At least in Unix you may be able to get past this by increasing your process 4950datasize limits: in csh/tcsh use C<limit> and C<limit datasize n> (where C<n> 4951is the number of kilobytes) to check the current limits and change them, and in 4952ksh/bash/zsh use C<ulimit -a> and C<ulimit -d n>, respectively. 4953 4954=item '.' outside of string in pack 4955 4956(F) The argument to a '.' in your template tried to move the working 4957position to before the start of the packed string being built. 4958 4959=item '@' outside of string in unpack 4960 4961(F) You had a template that specified an absolute position outside 4962the string being unpacked. See L<perlfunc/pack>. 4963 4964=item '@' outside of string with malformed UTF-8 in unpack 4965 4966(F) You had a template that specified an absolute position outside 4967the string being unpacked. The string being unpacked was also invalid 4968UTF-8. See L<perlfunc/pack>. 4969 4970=item overload arg '%s' is invalid 4971 4972(W overload) The L<overload> pragma was passed an argument it did not 4973recognize. Did you mistype an operator? 4974 4975=item Overloaded dereference did not return a reference 4976 4977(F) An object with an overloaded dereference operator was dereferenced, 4978but the overloaded operation did not return a reference. See 4979L<overload>. 4980 4981=item Overloaded qr did not return a REGEXP 4982 4983(F) An object with a C<qr> overload was used as part of a match, but the 4984overloaded operation didn't return a compiled regexp. See L<overload>. 4985 4986=item %s package attribute may clash with future reserved word: %s 4987 4988(W reserved) A lowercase attribute name was used that had a 4989package-specific handler. That name might have a meaning to Perl itself 4990some day, even though it doesn't yet. Perhaps you should use a 4991mixed-case attribute name, instead. See L<attributes>. 4992 4993=item pack/unpack repeat count overflow 4994 4995(F) You can't specify a repeat count so large that it overflows your 4996signed integers. See L<perlfunc/pack>. 4997 4998=item page overflow 4999 5000(W io) A single call to write() produced more lines than can fit on a 5001page. See L<perlform>. 5002 5003=item panic: %s 5004 5005(P) An internal error. 5006 5007=item panic: attempt to call %s in %s 5008 5009(P) One of the file test operators entered a code branch that calls 5010an ACL related-function, but that function is not available on this 5011platform. Earlier checks mean that it should not be possible to 5012enter this branch on this platform. 5013 5014=item panic: child pseudo-process was never scheduled 5015 5016(P) A child pseudo-process in the ithreads implementation on Windows 5017was not scheduled within the time period allowed and therefore was not 5018able to initialize properly. 5019 5020=item panic: ck_grep, type=%u 5021 5022(P) Failed an internal consistency check trying to compile a grep. 5023 5024=item panic: corrupt saved stack index %ld 5025 5026(P) The savestack was requested to restore more localized values than 5027there are in the savestack. 5028 5029=item panic: del_backref 5030 5031(P) Failed an internal consistency check while trying to reset a weak 5032reference. 5033 5034=item panic: fold_constants JMPENV_PUSH returned %d 5035 5036(P) While attempting folding constants an exception other than an C<eval> 5037failure was caught. 5038 5039=item panic: frexp: %f 5040 5041(P) The library function frexp() failed, making printf("%f") impossible. 5042 5043=item panic: goto, type=%u, ix=%ld 5044 5045(P) We popped the context stack to a context with the specified label, 5046and then discovered it wasn't a context we know how to do a goto in. 5047 5048=item panic: gp_free failed to free glob pointer 5049 5050(P) The internal routine used to clear a typeglob's entries tried 5051repeatedly, but each time something re-created entries in the glob. 5052Most likely the glob contains an object with a reference back to 5053the glob and a destructor that adds a new object to the glob. 5054 5055=item panic: INTERPCASEMOD, %s 5056 5057(P) The lexer got into a bad state at a case modifier. 5058 5059=item panic: INTERPCONCAT, %s 5060 5061(P) The lexer got into a bad state parsing a string with brackets. 5062 5063=item panic: kid popen errno read 5064 5065(F) A forked child returned an incomprehensible message about its errno. 5066 5067=item panic: leave_scope inconsistency %u 5068 5069(P) The savestack probably got out of sync. At least, there was an 5070invalid enum on the top of it. 5071 5072=item panic: magic_killbackrefs 5073 5074(P) Failed an internal consistency check while trying to reset all weak 5075references to an object. 5076 5077=item panic: malloc, %s 5078 5079(P) Something requested a negative number of bytes of malloc. 5080 5081=item panic: memory wrap 5082 5083(P) Something tried to allocate either more memory than possible or a 5084negative amount. 5085 5086=item panic: newFORLOOP, %s 5087 5088(P) The parser failed an internal consistency check while trying to parse 5089a C<foreach> loop. 5090 5091=item panic: pad_alloc, %p!=%p 5092 5093(P) The compiler got confused about which scratch pad it was allocating 5094and freeing temporaries and lexicals from. 5095 5096=item panic: pad_free curpad, %p!=%p 5097 5098(P) The compiler got confused about which scratch pad it was allocating 5099and freeing temporaries and lexicals from. 5100 5101=item panic: pad_free po 5102 5103(P) A zero scratch pad offset was detected internally. An attempt was 5104made to free a target that had not been allocated to begin with. 5105 5106=item panic: pad_reset curpad, %p!=%p 5107 5108(P) The compiler got confused about which scratch pad it was allocating 5109and freeing temporaries and lexicals from. 5110 5111=item panic: pad_sv po 5112 5113(P) A zero scratch pad offset was detected internally. Most likely 5114an operator needed a target but that target had not been allocated 5115for whatever reason. 5116 5117=item panic: pad_swipe curpad, %p!=%p 5118 5119(P) The compiler got confused about which scratch pad it was allocating 5120and freeing temporaries and lexicals from. 5121 5122=item panic: pad_swipe po 5123 5124(P) An invalid scratch pad offset was detected internally. 5125 5126=item panic: pp_iter, type=%u 5127 5128(P) The foreach iterator got called in a non-loop context frame. 5129 5130=item panic: pp_match%s 5131 5132(P) The internal pp_match() routine was called with invalid operational 5133data. 5134 5135=item panic: realloc, %s 5136 5137(P) Something requested a negative number of bytes of realloc. 5138 5139=item panic: reference miscount on nsv in sv_replace() (%d != 1) 5140 5141(P) The internal sv_replace() function was handed a new SV with a 5142reference count other than 1. 5143 5144=item panic: restartop in %s 5145 5146(P) Some internal routine requested a goto (or something like it), and 5147didn't supply the destination. 5148 5149=item panic: return, type=%u 5150 5151(P) We popped the context stack to a subroutine or eval context, and 5152then discovered it wasn't a subroutine or eval context. 5153 5154=item panic: scan_num, %s 5155 5156(P) scan_num() got called on something that wasn't a number. 5157 5158=item panic: Sequence (?{...}): no code block found in regex m/%s/ 5159 5160(P) While compiling a pattern that has embedded (?{}) or (??{}) code 5161blocks, perl couldn't locate the code block that should have already been 5162seen and compiled by perl before control passed to the regex compiler. 5163 5164=item panic: sv_chop %s 5165 5166(P) The sv_chop() routine was passed a position that is not within the 5167scalar's string buffer. 5168 5169=item panic: sv_insert, midend=%p, bigend=%p 5170 5171(P) The sv_insert() routine was told to remove more string than there 5172was string. 5173 5174=item panic: top_env 5175 5176(P) The compiler attempted to do a goto, or something weird like that. 5177 5178=item panic: unexpected constant lvalue entersub entry via type/targ %d:%d 5179 5180(P) When compiling a subroutine call in lvalue context, Perl failed an 5181internal consistency check. It encountered a malformed op tree. 5182 5183=item panic: unimplemented op %s (#%d) called 5184 5185(P) The compiler is screwed up and attempted to use an op that isn't 5186permitted at run time. 5187 5188=item panic: unknown OA_*: %x 5189 5190(P) The internal routine that handles arguments to C<&CORE::foo()> 5191subroutine calls was unable to determine what type of arguments 5192were expected. 5193 5194=item panic: utf16_to_utf8: odd bytelen 5195 5196(P) Something tried to call utf16_to_utf8 with an odd (as opposed 5197to even) byte length. 5198 5199=item panic: utf16_to_utf8_reversed: odd bytelen 5200 5201(P) Something tried to call utf16_to_utf8_reversed with an odd (as opposed 5202to even) byte length. 5203 5204=item panic: yylex, %s 5205 5206(P) The lexer got into a bad state while processing a case modifier. 5207 5208=item Parentheses missing around "%s" list 5209 5210(W parenthesis) You said something like 5211 5212 my $foo, $bar = @_; 5213 5214when you meant 5215 5216 my ($foo, $bar) = @_; 5217 5218Remember that "my", "our", "local" and "state" bind tighter than comma. 5219 5220=item Parsing code internal error (%s) 5221 5222(F) Parsing code supplied by an extension violated the parser's API in 5223a detectable way. 5224 5225=item Pattern subroutine nesting without pos change exceeded limit in regex 5226 5227(F) You used a pattern that uses too many nested subpattern calls without 5228consuming any text. Restructure the pattern so text is consumed before 5229the nesting limit is exceeded. 5230 5231=item C<-p> destination: %s 5232 5233(F) An error occurred during the implicit output invoked by the C<-p> 5234command-line switch. (This output goes to STDOUT unless you've 5235redirected it with select().) 5236 5237=item Perl API version %s of %s does not match %s 5238 5239(F) The XS module in question was compiled against a different incompatible 5240version of Perl than the one that has loaded the XS module. 5241 5242=item Perl folding rules are not up-to-date for 0x%X; please use the perlbug 5243utility to report; in regex; marked by S<<-- HERE> in m/%s/ 5244 5245(S regexp) You used a regular expression with case-insensitive matching, 5246and there is a bug in Perl in which the built-in regular expression 5247folding rules are not accurate. This may lead to incorrect results. 5248Please report this as a bug to L<https://github.com/Perl/perl5/issues/new/choose>. 5249 5250=item Perl_my_%s() not available 5251 5252(F) Your platform has very uncommon byte-order and integer size, 5253so it was not possible to set up some or all fixed-width byte-order 5254conversion functions. This is only a problem when you're using the 5255'<' or '>' modifiers in (un)pack templates. See L<perlfunc/pack>. 5256 5257=item Perl %s required (did you mean %s?)--this is only %s, stopped 5258 5259(F) The code you are trying to run has asked for a newer version of 5260Perl than you are running. Perhaps C<use 5.10> was written instead 5261of C<use 5.010> or C<use v5.10>. Without the leading C<v>, the number is 5262interpreted as a decimal, with every three digits after the 5263decimal point representing a part of the version number. So 5.10 5264is equivalent to v5.100. 5265 5266=item Perl %s required--this is only %s, stopped 5267 5268(F) The module in question uses features of a version of Perl more 5269recent than the currently running version. How long has it been since 5270you upgraded, anyway? See L<perlfunc/require>. 5271 5272=item PERL_SH_DIR too long 5273 5274(F) An error peculiar to OS/2. PERL_SH_DIR is the directory to find the 5275C<sh>-shell in. See "PERL_SH_DIR" in L<perlos2>. 5276 5277=item PERL_SIGNALS illegal: "%s" 5278 5279(X) See L<perlrun/PERL_SIGNALS> for legal values. 5280 5281=item Perls since %s too modern--this is %s, stopped 5282 5283(F) The code you are trying to run claims it will not run 5284on the version of Perl you are using because it is too new. 5285Maybe the code needs to be updated, or maybe it is simply 5286wrong and the version check should just be removed. 5287 5288=item perl: warning: Non hex character in '$ENV{PERL_HASH_SEED}', seed only partially set 5289 5290(S) PERL_HASH_SEED should match /^\s*(?:0x)?[0-9a-fA-F]+\s*\z/ but it 5291contained a non hex character. This could mean you are not using the 5292hash seed you think you are. 5293 5294=item perl: warning: Setting locale failed. 5295 5296(S) The whole warning message will look something like: 5297 5298 perl: warning: Setting locale failed. 5299 perl: warning: Please check that your locale settings: 5300 LC_ALL = "En_US", 5301 LANG = (unset) 5302 are supported and installed on your system. 5303 perl: warning: Falling back to the standard locale ("C"). 5304 5305Exactly what were the failed locale settings varies. In the above the 5306settings were that the LC_ALL was "En_US" and the LANG had no value. 5307This error means that Perl detected that you and/or your operating 5308system supplier and/or system administrator have set up the so-called 5309locale system but Perl could not use those settings. This was not 5310dead serious, fortunately: there is a "default locale" called "C" that 5311Perl can and will use, and the script will be run. Before you really 5312fix the problem, however, you will get the same error message each 5313time you run Perl. How to really fix the problem can be found in 5314L<perllocale> section B<LOCALE PROBLEMS>. 5315 5316=item perl: warning: strange setting in '$ENV{PERL_PERTURB_KEYS}': '%s' 5317 5318(S) Perl was run with the environment variable PERL_PERTURB_KEYS defined 5319but containing an unexpected value. The legal values of this setting 5320are as follows. 5321 5322 Numeric | String | Result 5323 --------+---------------+----------------------------------------- 5324 0 | NO | Disables key traversal randomization 5325 1 | RANDOM | Enables full key traversal randomization 5326 2 | DETERMINISTIC | Enables repeatable key traversal 5327 | | randomization 5328 5329Both numeric and string values are accepted, but note that string values are 5330case sensitive. The default for this setting is "RANDOM" or 1. 5331 5332=item pid %x not a child 5333 5334(W exec) A warning peculiar to VMS. Waitpid() was asked to wait for a 5335process which isn't a subprocess of the current process. While this is 5336fine from VMS' perspective, it's probably not what you intended. 5337 5338=item 'P' must have an explicit size in unpack 5339 5340(F) The unpack format P must have an explicit size, not "*". 5341 5342=item POSIX class [:%s:] unknown in regex; marked by S<<-- HERE> in m/%s/ 5343 5344(F) The class in the character class [: :] syntax is unknown. The S<<-- HERE> 5345shows whereabouts in the regular expression the problem was discovered. 5346Note that the POSIX character classes do B<not> have the C<is> prefix 5347the corresponding C interfaces have: in other words, it's C<[[:print:]]>, 5348not C<isprint>. See L<perlre>. 5349 5350=item POSIX getpgrp can't take an argument 5351 5352(F) Your system has POSIX getpgrp(), which takes no argument, unlike 5353the BSD version, which takes a pid. 5354 5355=item POSIX syntax [%c %c] belongs inside character classes%s in regex; marked by 5356S<<-- HERE> in m/%s/ 5357 5358(W regexp) Perl thinks that you intended to write a POSIX character 5359class, but didn't use enough brackets. These POSIX class constructs [: 5360:], [= =], and [. .] go I<inside> character classes, the [] are part of 5361the construct, for example: C<qr/[012[:alpha:]345]/>. What the regular 5362expression pattern compiled to is probably not what you were intending. 5363For example, C<qr/[:alpha:]/> compiles to a regular bracketed character 5364class consisting of the four characters C<":">, C<"a">, C<"l">, 5365C<"h">, and C<"p">. To specify the POSIX class, it should have been 5366written C<qr/[[:alpha:]]/>. 5367 5368Note that [= =] and [. .] are not currently 5369implemented; they are simply placeholders for future extensions and 5370will cause fatal errors. The S<<-- HERE> shows whereabouts in the regular 5371expression the problem was discovered. See L<perlre>. 5372 5373If the specification of the class was not completely valid, the message 5374indicates that. 5375 5376=item POSIX syntax [. .] is reserved for future extensions in regex; marked by 5377S<<-- HERE> in m/%s/ 5378 5379(F) Within regular expression character classes ([]) the syntax beginning 5380with "[." and ending with ".]" is reserved for future extensions. If you 5381need to represent those character sequences inside a regular expression 5382character class, just quote the square brackets with the backslash: "\[." 5383and ".\]". The S<<-- HERE> shows whereabouts in the regular expression the 5384problem was discovered. See L<perlre>. 5385 5386=item POSIX syntax [= =] is reserved for future extensions in regex; marked by 5387S<<-- HERE> in m/%s/ 5388 5389(F) Within regular expression character classes ([]) the syntax beginning 5390with "[=" and ending with "=]" is reserved for future extensions. If you 5391need to represent those character sequences inside a regular expression 5392character class, just quote the square brackets with the backslash: "\[=" 5393and "=\]". The S<<-- HERE> shows whereabouts in the regular expression the 5394problem was discovered. See L<perlre>. 5395 5396=item Possible attempt to put comments in qw() list 5397 5398(W qw) qw() lists contain items separated by whitespace; as with literal 5399strings, comment characters are not ignored, but are instead treated as 5400literal data. (You may have used different delimiters than the 5401parentheses shown here; braces are also frequently used.) 5402 5403You probably wrote something like this: 5404 5405 @list = qw( 5406 a # a comment 5407 b # another comment 5408 ); 5409 5410when you should have written this: 5411 5412 @list = qw( 5413 a 5414 b 5415 ); 5416 5417If you really want comments, build your list the 5418old-fashioned way, with quotes and commas: 5419 5420 @list = ( 5421 'a', # a comment 5422 'b', # another comment 5423 ); 5424 5425=item Possible attempt to separate words with commas 5426 5427(W qw) qw() lists contain items separated by whitespace; therefore 5428commas aren't needed to separate the items. (You may have used 5429different delimiters than the parentheses shown here; braces are also 5430frequently used.) 5431 5432You probably wrote something like this: 5433 5434 qw! a, b, c !; 5435 5436which puts literal commas into some of the list items. Write it without 5437commas if you don't want them to appear in your data: 5438 5439 qw! a b c !; 5440 5441=item Possible memory corruption: %s overflowed 3rd argument 5442 5443(F) An ioctl() or fcntl() returned more than Perl was bargaining for. 5444Perl guesses a reasonable buffer size, but puts a sentinel byte at the 5445end of the buffer just in case. This sentinel byte got clobbered, and 5446Perl assumes that memory is now corrupted. See L<perlfunc/ioctl>. 5447 5448=item Possible precedence issue with control flow operator (%s) 5449 5450(W syntax) There is a possible problem with the mixing of a control 5451flow operator (e.g. C<return>) and a low-precedence operator like 5452C<or>. Consider: 5453 5454 sub { return $x or $y; } 5455 5456This is parsed as: 5457 5458 sub { (return $x) or $y; } 5459 5460Which is effectively just: 5461 5462 sub { return $x; } 5463 5464Either use parentheses or the high-precedence variant of the operator. 5465 5466Note this may be also triggered for constructs like: 5467 5468 sub { 1 if die; } 5469 5470=item Possible precedence problem on bitwise %s operator 5471 5472(W precedence) Your program uses a bitwise logical operator in conjunction 5473with a numeric comparison operator, like this : 5474 5475 if ($x & $y == 0) { ... } 5476 5477This expression is actually equivalent to C<$x & ($y == 0)>, due to the 5478higher precedence of C<==>. This is probably not what you want. (If you 5479really meant to write this, disable the warning, or, better, put the 5480parentheses explicitly and write C<$x & ($y == 0)>). 5481 5482=item Possible unintended interpolation of $\ in regex 5483 5484(W ambiguous) You said something like C<m/$\/> in a regex. 5485The regex C<m/foo$\s+bar/m> translates to: match the word 'foo', the output 5486record separator (see L<perlvar/$\>) and the letter 's' (one time or more) 5487followed by the word 'bar'. 5488 5489If this is what you intended then you can silence the warning by using 5490C<m/${\}/> (for example: C<m/foo${\}s+bar/>). 5491 5492If instead you intended to match the word 'foo' at the end of the line 5493followed by whitespace and the word 'bar' on the next line then you can use 5494C<m/$(?)\/> (for example: C<m/foo$(?)\s+bar/>). 5495 5496=item Possible unintended interpolation of %s in string 5497 5498(W ambiguous) You said something like '@foo' in a double-quoted string 5499but there was no array C<@foo> in scope at the time. If you wanted a 5500literal @foo, then write it as \@foo; otherwise find out what happened 5501to the array you apparently lost track of. 5502 5503=item Precedence problem: open %s should be open(%s) 5504 5505(S precedence) The old irregular construct 5506 5507 open FOO || die; 5508 5509is now misinterpreted as 5510 5511 open(FOO || die); 5512 5513because of the strict regularization of Perl 5's grammar into unary and 5514list operators. (The old open was a little of both.) You must put 5515parentheses around the filehandle, or use the new "or" operator instead 5516of "||". 5517 5518=item Premature end of script headers 5519 5520See L</500 Server error>. 5521 5522=item printf() on closed filehandle %s 5523 5524(W closed) The filehandle you're writing to got itself closed sometime 5525before now. Check your control flow. 5526 5527=item print() on closed filehandle %s 5528 5529(W closed) The filehandle you're printing on got itself closed sometime 5530before now. Check your control flow. 5531 5532=item Process terminated by SIG%s 5533 5534(W) This is a standard message issued by OS/2 applications, while *nix 5535applications die in silence. It is considered a feature of the OS/2 5536port. One can easily disable this by appropriate sighandlers, see 5537L<perlipc/"Signals">. See also "Process terminated by SIGTERM/SIGINT" 5538in L<perlos2>. 5539 5540=item Prototype after '%c' for %s : %s 5541 5542(W illegalproto) A character follows % or @ in a prototype. This is 5543useless, since % and @ gobble the rest of the subroutine arguments. 5544 5545=item Prototype mismatch: %s vs %s 5546 5547(S prototype) The subroutine being declared or defined had previously been 5548declared or defined with a different function prototype. 5549 5550=item Prototype not terminated 5551 5552(F) You've omitted the closing parenthesis in a function prototype 5553definition. 5554 5555=item Prototype '%s' overridden by attribute 'prototype(%s)' in %s 5556 5557(W prototype) A prototype was declared in both the parentheses after 5558the sub name and via the prototype attribute. The prototype in 5559parentheses is useless, since it will be replaced by the prototype 5560from the attribute before it's ever used. 5561 5562=item %s on BEGIN block ignored 5563 5564(W syntax) C<BEGIN> blocks are executed immediately after they are parsed 5565and then thrown away. Any prototypes or attributes are therefore 5566meaningless and are ignored. You should remove them from the C<BEGIN> block. 5567Note this also means you cannot create a constant called C<BEGIN>. 5568 5569=item Quantifier follows nothing in regex; marked by S<<-- HERE> in m/%s/ 5570 5571(F) You started a regular expression with a quantifier. Backslash it if 5572you meant it literally. The S<<-- HERE> shows whereabouts in the regular 5573expression the problem was discovered. See L<perlre>. 5574 5575=item Quantifier in {,} bigger than %d in regex; marked by S<<-- HERE> in m/%s/ 5576 5577(F) There is currently a limit to the size of the min and max values of 5578the {min,max} construct. The S<<-- HERE> shows whereabouts in the regular 5579expression the problem was discovered. See L<perlre>. 5580 5581=item Quantifier {n,m} with n > m can't match in regex 5582 5583=item Quantifier {n,m} with n > m can't match in regex; marked by 5584S<<-- HERE> in m/%s/ 5585 5586(W regexp) Minima should be less than or equal to maxima. If you really 5587want your regexp to match something 0 times, just put {0}. 5588 5589=item Quantifier unexpected on zero-length expression in regex m/%s/ 5590 5591(W regexp) You applied a regular expression quantifier in a place where 5592it makes no sense, such as on a zero-width assertion. Try putting the 5593quantifier inside the assertion instead. For example, the way to match 5594"abc" provided that it is followed by three repetitions of "xyz" is 5595C</abc(?=(?:xyz){3})/>, not C</abc(?=xyz){3}/>. 5596 5597=item Range iterator outside integer range 5598 5599(F) One (or both) of the numeric arguments to the range operator ".." 5600are outside the range which can be represented by integers internally. 5601One possible workaround is to force Perl to use magical string increment 5602by prepending "0" to your numbers. 5603 5604=item Ranges of ASCII printables should be some subset of "0-9", "A-Z", or 5605"a-z" in regex; marked by S<<-- HERE> in m/%s/ 5606 5607(W regexp) (only under C<S<use re 'strict'>> or within C<(?[...])>) 5608 5609Stricter rules help to find typos and other errors. Perhaps you didn't 5610even intend a range here, if the C<"-"> was meant to be some other 5611character, or should have been escaped (like C<"\-">). If you did 5612intend a range, the one that was used is not portable between ASCII and 5613EBCDIC platforms, and doesn't have an obvious meaning to a casual 5614reader. 5615 5616 [3-7] # OK; Obvious and portable 5617 [d-g] # OK; Obvious and portable 5618 [A-Y] # OK; Obvious and portable 5619 [A-z] # WRONG; Not portable; not clear what is meant 5620 [a-Z] # WRONG; Not portable; not clear what is meant 5621 [%-.] # WRONG; Not portable; not clear what is meant 5622 [\x41-Z] # WRONG; Not portable; not obvious to non-geek 5623 5624(You can force portability by specifying a Unicode range, which means that 5625the endpoints are specified by 5626L<C<\N{...}>|perlrecharclass/Character Ranges>, but the meaning may 5627still not be obvious.) 5628The stricter rules require that ranges that start or stop with an ASCII 5629character that is not a control have all their endpoints be the literal 5630character, and not some escape sequence (like C<"\x41">), and the ranges 5631must be all digits, or all uppercase letters, or all lowercase letters. 5632 5633=item Ranges of digits should be from the same group in regex; marked by 5634S<<-- HERE> in m/%s/ 5635 5636(W regexp) (only under C<S<use re 'strict'>> or within C<(?[...])>) 5637 5638Stricter rules help to find typos and other errors. You included a 5639range, and at least one of the end points is a decimal digit. Under the 5640stricter rules, when this happens, both end points should be digits in 5641the same group of 10 consecutive digits. 5642 5643=item readdir() attempted on invalid dirhandle %s 5644 5645(W io) The dirhandle you're reading from is either closed or not really 5646a dirhandle. Check your control flow. 5647 5648=item readline() on closed filehandle %s 5649 5650(W closed) The filehandle you're reading from got itself closed sometime 5651before now. Check your control flow. 5652 5653=item readline() on unopened filehandle %s 5654 5655(W unopened) The filehandle you're reading from was never opened. Check your 5656control flow. 5657 5658=item read() on closed filehandle %s 5659 5660(W closed) You tried to read from a closed filehandle. 5661 5662=item read() on unopened filehandle %s 5663 5664(W unopened) You tried to read from a filehandle that was never opened. 5665 5666=item realloc() of freed memory ignored 5667 5668(S malloc) An internal routine called realloc() on something that had 5669already been freed. 5670 5671=item Recompile perl with B<-D>DEBUGGING to use B<-D> switch 5672 5673(S debugging) You can't use the B<-D> option unless the code to produce 5674the desired output is compiled into Perl, which entails some overhead, 5675which is why it's currently left out of your copy. 5676 5677=item Recursive call to Perl_load_module in PerlIO_find_layer 5678 5679(P) It is currently not permitted to load modules when creating 5680a filehandle inside an %INC hook. This can happen with C<open my 5681$fh, '<', \$scalar>, which implicitly loads PerlIO::scalar. Try 5682loading PerlIO::scalar explicitly first. 5683 5684=item Recursive inheritance detected in package '%s' 5685 5686(F) While calculating the method resolution order (MRO) of a package, Perl 5687believes it found an infinite loop in the C<@ISA> hierarchy. This is a 5688crude check that bails out after 100 levels of C<@ISA> depth. 5689 5690=item Redundant argument in %s 5691 5692(W redundant) You called a function with more arguments than other 5693arguments you supplied indicated would be needed. Currently only 5694emitted when a printf-type format required fewer arguments than were 5695supplied, but might be used in the future for e.g. L<perlfunc/pack>. 5696 5697=item refcnt_dec: fd %d%s 5698 5699=item refcnt: fd %d%s 5700 5701=item refcnt_inc: fd %d%s 5702 5703(P) Perl's I/O implementation failed an internal consistency check. If 5704you see this message, something is very wrong. 5705 5706=item Reference found where even-sized list expected 5707 5708(W misc) You gave a single reference where Perl was expecting a list 5709with an even number of elements (for assignment to a hash). This 5710usually means that you used the anon hash constructor when you meant 5711to use parens. In any case, a hash requires key/value B<pairs>. 5712 5713 %hash = { one => 1, two => 2, }; # WRONG 5714 %hash = [ qw/ an anon array / ]; # WRONG 5715 %hash = ( one => 1, two => 2, ); # right 5716 %hash = qw( one 1 two 2 ); # also fine 5717 5718=item Reference is already weak 5719 5720(W misc) You have attempted to weaken a reference that is already weak. 5721Doing so has no effect. 5722 5723=item Reference is not weak 5724 5725(W misc) You have attempted to unweaken a reference that is not weak. 5726Doing so has no effect. 5727 5728=item Reference to invalid group 0 in regex; marked by S<<-- HERE> in m/%s/ 5729 5730(F) You used C<\g0> or similar in a regular expression. You may refer 5731to capturing parentheses only with strictly positive integers 5732(normal backreferences) or with strictly negative integers (relative 5733backreferences). Using 0 does not make sense. 5734 5735=item Reference to nonexistent group in regex; marked by S<<-- HERE> in 5736m/%s/ 5737 5738(F) You used something like C<\7> in your regular expression, but there are 5739not at least seven sets of capturing parentheses in the expression. If 5740you wanted to have the character with ordinal 7 inserted into the regular 5741expression, prepend zeroes to make it three digits long: C<\007> 5742 5743The S<<-- HERE> shows whereabouts in the regular expression the problem was 5744discovered. 5745 5746=item Reference to nonexistent named group in regex; marked by S<<-- HERE> 5747in m/%s/ 5748 5749(F) You used something like C<\k'NAME'> or C<< \k<NAME> >> in your regular 5750expression, but there is no corresponding named capturing parentheses 5751such as C<(?'NAME'...)> or C<< (?<NAME>...) >>. Check if the name has been 5752spelled correctly both in the backreference and the declaration. 5753 5754The S<<-- HERE> shows whereabouts in the regular expression the problem was 5755discovered. 5756 5757=item Reference to nonexistent or unclosed group in regex; marked by 5758S<<-- HERE> in m/%s/ 5759 5760(F) You used something like C<\g{-7}> in your regular expression, but there 5761are not at least seven sets of closed capturing parentheses in the 5762expression before where the C<\g{-7}> was located. 5763 5764The S<<-- HERE> shows whereabouts in the regular expression the problem was 5765discovered. 5766 5767=item regexp memory corruption 5768 5769(P) The regular expression engine got confused by what the regular 5770expression compiler gave it. 5771 5772=item Regexp modifier "/%c" may appear a maximum of twice 5773 5774=item Regexp modifier "%c" may appear a maximum of twice in regex; marked 5775by S<<-- HERE> in m/%s/ 5776 5777(F) The regular expression pattern had too many occurrences 5778of the specified modifier. Remove the extraneous ones. 5779 5780=item Regexp modifier "%c" may not appear after the "-" in regex; marked by <-- 5781HERE in m/%s/ 5782 5783(F) Turning off the given modifier has the side effect of turning on 5784another one. Perl currently doesn't allow this. Reword the regular 5785expression to use the modifier you want to turn on (and place it before 5786the minus), instead of the one you want to turn off. 5787 5788=item Regexp modifier "/%c" may not appear twice 5789 5790=item Regexp modifier "%c" may not appear twice in regex; marked by <-- 5791HERE in m/%s/ 5792 5793(F) The regular expression pattern had too many occurrences 5794of the specified modifier. Remove the extraneous ones. 5795 5796=item Regexp modifiers "/%c" and "/%c" are mutually exclusive 5797 5798=item Regexp modifiers "%c" and "%c" are mutually exclusive in regex; 5799marked by S<<-- HERE> in m/%s/ 5800 5801(F) The regular expression pattern had more than one of these 5802mutually exclusive modifiers. Retain only the modifier that is 5803supposed to be there. 5804 5805=item Regexp out of space in regex m/%s/ 5806 5807(P) A "can't happen" error, because safemalloc() should have caught it 5808earlier. 5809 5810=item Repeated format line will never terminate (~~ and @#) 5811 5812(F) Your format contains the ~~ repeat-until-blank sequence and a 5813numeric field that will never go blank so that the repetition never 5814terminates. You might use ^# instead. See L<perlform>. 5815 5816=item Replacement list is longer than search list 5817 5818(W misc) You have used a replacement list that is longer than the 5819search list. So the additional elements in the replacement list 5820are meaningless. 5821 5822=item Required parameter '%s' is missing for %s constructor 5823 5824(F) You called the constructor for a class that has a required named 5825parameter, but did not pass that parameter at all. 5826 5827=item '(*%s' requires a terminating ':' in regex; marked by <-- HERE in m/%s/ 5828 5829(F) You used a construct that needs a colon and pattern argument. 5830Supply these or check that you are using the right construct. 5831 5832=item '%s' resolved to '\o{%s}%d' 5833 5834As of Perl 5.32, this message is no longer generated. Instead, see 5835L</Non-octal character '%c' terminates \o early. Resolved as "%s">. 5836(W misc, regexp) You wrote something like C<\08>, or C<\179> in a 5837double-quotish string. All but the last digit is treated as a single 5838character, specified in octal. The last digit is the next character in 5839the string. To tell Perl that this is indeed what you want, you can use 5840the C<\o{ }> syntax, or use exactly three digits to specify the octal 5841for the character. 5842 5843=item Reversed %s= operator 5844 5845(W syntax) You wrote your assignment operator backwards. The = must 5846always come last, to avoid ambiguity with subsequent unary operators. 5847 5848=item rewinddir() attempted on invalid dirhandle %s 5849 5850(W io) The dirhandle you tried to do a rewinddir() on is either closed 5851or not really a dirhandle. Check your control flow. 5852 5853=item Scalars leaked: %d 5854 5855(S internal) Something went wrong in Perl's internal bookkeeping 5856of scalars: not all scalar variables were deallocated by the time 5857Perl exited. What this usually indicates is a memory leak, which 5858is of course bad, especially if the Perl program is intended to be 5859long-running. 5860 5861=item Scalar value @%s[%s] better written as $%s[%s] 5862 5863(W syntax) You've used an array slice (indicated by @) to select a 5864single element of an array. Generally it's better to ask for a scalar 5865value (indicated by $). The difference is that C<$foo[&bar]> always 5866behaves like a scalar, both when assigning to it and when evaluating its 5867argument, while C<@foo[&bar]> behaves like a list when you assign to it, 5868and provides a list context to its subscript, which can do weird things 5869if you're expecting only one subscript. 5870 5871On the other hand, if you were actually hoping to treat the array 5872element as a list, you need to look into how references work, because 5873Perl will not magically convert between scalars and lists for you. See 5874L<perlref>. 5875 5876=item Scalar value @%s{%s} better written as $%s{%s} 5877 5878(W syntax) You've used a hash slice (indicated by @) to select a single 5879element of a hash. Generally it's better to ask for a scalar value 5880(indicated by $). The difference is that C<$foo{&bar}> always behaves 5881like a scalar, both when assigning to it and when evaluating its 5882argument, while C<@foo{&bar}> behaves like a list when you assign to it, 5883and provides a list context to its subscript, which can do weird things 5884if you're expecting only one subscript. 5885 5886On the other hand, if you were actually hoping to treat the hash element 5887as a list, you need to look into how references work, because Perl will 5888not magically convert between scalars and lists for you. See 5889L<perlref>. 5890 5891=item Search pattern not terminated 5892 5893(F) The lexer couldn't find the final delimiter of a // or m{} 5894construct. Remember that bracketing delimiters count nesting level. 5895Missing the leading C<$> from a variable C<$m> may cause this error. 5896 5897Note that since Perl 5.10.0 a // can also be the I<defined-or> 5898construct, not just the empty search pattern. Therefore code written 5899in Perl 5.10.0 or later that uses the // as the I<defined-or> can be 5900misparsed by pre-5.10.0 Perls as a non-terminated search pattern. 5901 5902=item seekdir() attempted on invalid dirhandle %s 5903 5904(W io) The dirhandle you are doing a seekdir() on is either closed or not 5905really a dirhandle. Check your control flow. 5906 5907=item %sseek() on unopened filehandle 5908 5909(W unopened) You tried to use the seek() or sysseek() function on a 5910filehandle that was either never opened or has since been closed. 5911 5912=item select not implemented 5913 5914(F) This machine doesn't implement the select() system call. 5915 5916=item Self-ties of arrays and hashes are not supported 5917 5918(F) Self-ties are of arrays and hashes are not supported in 5919the current implementation. 5920 5921=item Semicolon seems to be missing 5922 5923(W semicolon) A nearby syntax error was probably caused by a missing 5924semicolon, or possibly some other missing operator, such as a comma. 5925 5926=item semi-panic: attempt to dup freed string 5927 5928(S internal) The internal newSVsv() routine was called to duplicate a 5929scalar that had previously been marked as free. 5930 5931=item sem%s not implemented 5932 5933(F) You don't have System V semaphore IPC on your system. 5934 5935=item send() on closed socket %s 5936 5937(W closed) The socket you're sending to got itself closed sometime 5938before now. Check your control flow. 5939 5940=item Sequence "\c{" invalid 5941 5942(F) These three characters may not appear in sequence in a 5943double-quotish context. This message is raised only on non-ASCII 5944platforms (a different error message is output on ASCII ones). If you 5945were intending to specify a control character with this sequence, you'll 5946have to use a different way to specify it. 5947 5948=item Sequence (? incomplete in regex; marked by S<<-- HERE> in m/%s/ 5949 5950(F) A regular expression ended with an incomplete extension (?. The 5951S<<-- HERE> shows whereabouts in the regular expression the problem was 5952discovered. See L<perlre>. 5953 5954=item Sequence (?%c...) not implemented in regex; marked by S<<-- HERE> in 5955m/%s/ 5956 5957(F) A proposed regular expression extension has the character reserved 5958but has not yet been written. The S<<-- HERE> shows whereabouts in the 5959regular expression the problem was discovered. See L<perlre>. 5960 5961=item Sequence (?%s...) not recognized in regex; marked by S<<-- HERE> in 5962m/%s/ 5963 5964(F) You used a regular expression extension that doesn't make sense. 5965The S<<-- HERE> shows whereabouts in the regular expression the problem was 5966discovered. This may happen when using the C<(?^...)> construct to tell 5967Perl to use the default regular expression modifiers, and you 5968redundantly specify a default modifier. For other 5969causes, see L<perlre>. 5970 5971=item Sequence (?#... not terminated in regex m/%s/ 5972 5973(F) A regular expression comment must be terminated by a closing 5974parenthesis. Embedded parentheses aren't allowed. See 5975L<perlre>. 5976 5977=item Sequence (?&... not terminated in regex; marked by S<<-- HERE> in 5978m/%s/ 5979 5980(F) A named reference of the form C<(?&...)> was missing the final 5981closing parenthesis after the name. The S<<-- HERE> shows whereabouts 5982in the regular expression the problem was discovered. 5983 5984=item Sequence (?%c... not terminated in regex; marked by S<<-- HERE> 5985in m/%s/ 5986 5987(F) A named group of the form C<(?'...')> or C<< (?<...>) >> was missing the final 5988closing quote or angle bracket. The S<<-- HERE> shows whereabouts in the 5989regular expression the problem was discovered. 5990 5991=item Sequence (%s... not terminated in regex; marked by S<<-- HERE> 5992in m/%s/ 5993 5994(F) A lookahead assertion C<(?=...)> or C<(?!...)> or lookbehind 5995assertion C<< (?<=...) >> or C<< (?<!...) >> was missing the final 5996closing parenthesis. The S<<-- HERE> shows whereabouts in the 5997regular expression the problem was discovered. 5998 5999=item Sequence (?(%c... not terminated in regex; marked by S<<-- HERE> 6000in m/%s/ 6001 6002(F) A named reference of the form C<(?('...')...)> or C<< (?(<...>)...) >> was 6003missing the final closing quote or angle bracket after the name. The 6004S<<-- HERE> shows whereabouts in the regular expression the problem was 6005discovered. 6006 6007=item Sequence (?... not terminated in regex; marked by S<<-- HERE> in 6008m/%s/ 6009 6010(F) There was no matching closing parenthesis for the '('. The 6011S<<-- HERE> shows whereabouts in the regular expression the problem was 6012discovered. 6013 6014=item Sequence \%s... not terminated in regex; marked by S<<-- HERE> in 6015m/%s/ 6016 6017(F) The regular expression expects a mandatory argument following the escape 6018sequence and this has been omitted or incorrectly written. 6019 6020=item Sequence (?{...}) not terminated with ')' 6021 6022(F) The end of the perl code contained within the {...} must be 6023followed immediately by a ')'. 6024 6025=item Sequence (?PE<gt>... not terminated in regex; marked by S<<-- HERE> in m/%s/ 6026 6027(F) A named reference of the form C<(?PE<gt>...)> was missing the final 6028closing parenthesis after the name. The S<<-- HERE> shows whereabouts 6029in the regular expression the problem was discovered. 6030 6031=item Sequence (?PE<lt>... not terminated in regex; marked by S<<-- HERE> in m/%s/ 6032 6033(F) A named group of the form C<(?PE<lt>...E<gt>')> was missing the final 6034closing angle bracket. The S<<-- HERE> shows whereabouts in the 6035regular expression the problem was discovered. 6036 6037=item Sequence ?P=... not terminated in regex; marked by S<<-- HERE> in 6038m/%s/ 6039 6040(F) A named reference of the form C<(?P=...)> was missing the final 6041closing parenthesis after the name. The S<<-- HERE> shows whereabouts 6042in the regular expression the problem was discovered. 6043 6044=item Sequence (?R) not terminated in regex m/%s/ 6045 6046(F) An C<(?R)> or C<(?0)> sequence in a regular expression was missing the 6047final parenthesis. 6048 6049=item Z<>500 Server error 6050 6051(A) This is the error message generally seen in a browser window 6052when trying to run a CGI program (including SSI) over the web. The 6053actual error text varies widely from server to server. The most 6054frequently-seen variants are "500 Server error", "Method (something) 6055not permitted", "Document contains no data", "Premature end of script 6056headers", and "Did not produce a valid header". 6057 6058B<This is a CGI error, not a Perl error>. 6059 6060You need to make sure your script is executable, is accessible by 6061the user CGI is running the script under (which is probably not the 6062user account you tested it under), does not rely on any environment 6063variables (like PATH) from the user it isn't running under, and isn't 6064in a location where the CGI server can't find it, basically, more or 6065less. Please see the following for more information: 6066 6067 https://www.perl.org/CGI_MetaFAQ.html 6068 http://www.htmlhelp.org/faq/cgifaq.html 6069 http://www.w3.org/Security/Faq/ 6070 6071You should also look at L<perlfaq9>. 6072 6073=item setegid() not implemented 6074 6075(F) You tried to assign to C<$)>, and your operating system doesn't 6076support the setegid() system call (or equivalent), or at least Configure 6077didn't think so. 6078 6079=item seteuid() not implemented 6080 6081(F) You tried to assign to C<< $> >>, and your operating system doesn't 6082support the seteuid() system call (or equivalent), or at least Configure 6083didn't think so. 6084 6085=item setpgrp can't take arguments 6086 6087(F) Your system has the setpgrp() from BSD 4.2, which takes no 6088arguments, unlike POSIX setpgid(), which takes a process ID and process 6089group ID. 6090 6091=item setrgid() not implemented 6092 6093(F) You tried to assign to C<$(>, and your operating system doesn't 6094support the setrgid() system call (or equivalent), or at least Configure 6095didn't think so. 6096 6097=item setruid() not implemented 6098 6099(F) You tried to assign to C<$<>, and your operating system doesn't 6100support the setruid() system call (or equivalent), or at least Configure 6101didn't think so. 6102 6103=item setsockopt() on closed socket %s 6104 6105(W closed) You tried to set a socket option on a closed socket. Did you 6106forget to check the return value of your socket() call? See 6107L<perlfunc/setsockopt>. 6108 6109=item Setting $/ to a reference to %s is forbidden 6110 6111(F) You assigned a reference to a scalar to C<$/> where the referenced item is 6112not a positive integer. In older perls this B<appeared> to work the same as 6113setting it to C<undef> but was in fact internally different, less efficient 6114and with very bad luck could have resulted in your file being split by a 6115stringified form of the reference. 6116 6117In Perl 5.20.0 this was changed so that it would be B<exactly> the same as 6118setting C<$/> to undef, with the exception that this warning would be thrown. 6119 6120You are recommended to change your code to set C<$/> to C<undef> explicitly if 6121you wish to slurp the file. As of Perl 5.28 assigning C<$/> to a reference 6122to an integer which isn't positive is a fatal error. 6123 6124=item Setting $/ to %s reference is forbidden 6125 6126(F) You tried to assign a reference to a non integer to C<$/>. In older 6127Perls this would have behaved similarly to setting it to a reference to 6128a positive integer, where the integer was the address of the reference. 6129As of Perl 5.20.0 this is a fatal error, to allow future versions of Perl 6130to use non-integer refs for more interesting purposes. 6131 6132=item shm%s not implemented 6133 6134(F) You don't have System V shared memory IPC on your system. 6135 6136=item !=~ should be !~ 6137 6138(W syntax) The non-matching operator is !~, not !=~. !=~ will be 6139interpreted as the != (numeric not equal) and ~ (1's complement) 6140operators: probably not what you intended. 6141 6142=item /%s/ should probably be written as "%s" 6143 6144(W syntax) You have used a pattern where Perl expected to find a string, 6145as in the first argument to C<join>. Perl will treat the true or false 6146result of matching the pattern against $_ as the string, which is 6147probably not what you had in mind. 6148 6149=item shutdown() on closed socket %s 6150 6151(W closed) You tried to do a shutdown on a closed socket. Seems a bit 6152superfluous. 6153 6154=item SIG%s handler "%s" not defined 6155 6156(W signal) The signal handler named in %SIG doesn't, in fact, exist. 6157Perhaps you put it into the wrong package? 6158 6159=item Slab leaked from cv %p 6160 6161(S) If you see this message, then something is seriously wrong with the 6162internal bookkeeping of op trees. An op tree needed to be freed after 6163a compilation error, but could not be found, so it was leaked instead. 6164 6165=item sleep(%u) too large 6166 6167(W overflow) You called C<sleep> with a number that was larger than 6168it can reliably handle and C<sleep> probably slept for less time than 6169requested. 6170 6171=item Slurpy parameter not last 6172 6173(F) In a subroutine signature, you put something after a slurpy (array or 6174hash) parameter. The slurpy parameter takes all the available arguments, 6175so there can't be any left to fill later parameters. 6176 6177=item Smart matching a non-overloaded object breaks encapsulation 6178 6179(F) You should not use the C<~~> operator on an object that does not 6180overload it: Perl refuses to use the object's underlying structure 6181for the smart match. 6182 6183=item Smartmatch is deprecated 6184 6185(D deprecated::smartmatch) This warning is emitted if you 6186use the smartmatch (C<~~>) operator. This is a deprecated 6187feature. Particularly, its behavior is noticed for being 6188unnecessarily complex and unintuitive, and it will be removed 6189in Perl 5.42. 6190 6191=item Sorry, hash keys must be smaller than 2**31 bytes 6192 6193(F) You tried to create a hash containing a very large key, where "very 6194large" means that it needs at least 2 gigabytes to store. Unfortunately, 6195Perl doesn't yet handle such large hash keys. You should 6196reconsider your design to avoid hashing such a long string directly. 6197 6198=item sort is now a reserved word 6199 6200(F) An ancient error message that almost nobody ever runs into anymore. 6201But before sort was a keyword, people sometimes used it as a filehandle. 6202 6203=item Source filters apply only to byte streams 6204 6205(F) You tried to activate a source filter (usually by loading a 6206source filter module) within a string passed to C<eval>. This is 6207not permitted under the C<unicode_eval> feature. Consider using 6208C<evalbytes> instead. See L<feature>. 6209 6210=item splice() offset past end of array 6211 6212(W misc) You attempted to specify an offset that was past the end of 6213the array passed to splice(). Splicing will instead commence at the 6214end of the array, rather than past it. If this isn't what you want, 6215try explicitly pre-extending the array by assigning $#array = $offset. 6216See L<perlfunc/splice>. 6217 6218=item Split loop 6219 6220(P) The split was looping infinitely. (Obviously, a split shouldn't 6221iterate more times than there are characters of input, which is what 6222happened.) See L<perlfunc/split>. 6223 6224=item Statement unlikely to be reached 6225 6226(W exec) You did an exec() with some statement after it other than a 6227die(). This is almost always an error, because exec() never returns 6228unless there was a failure. You probably wanted to use system() 6229instead, which does return. To suppress this warning, put the exec() in 6230a block by itself. 6231 6232=item "state" subroutine %s can't be in a package 6233 6234(F) Lexically scoped subroutines aren't in a package, so it doesn't make 6235sense to try to declare one with a package qualifier on the front. 6236 6237=item "state %s" used in sort comparison 6238 6239(W syntax) The package variables $a and $b are used for sort comparisons. 6240You used $a or $b in as an operand to the C<< <=> >> or C<cmp> operator inside a 6241sort comparison block, and the variable had earlier been declared as a 6242lexical variable. Either qualify the sort variable with the package 6243name, or rename the lexical variable. 6244 6245=item "state" variable %s can't be in a package 6246 6247(F) Lexically scoped variables aren't in a package, so it doesn't make 6248sense to try to declare one with a package qualifier on the front. Use 6249local() if you want to localize a package variable. 6250 6251=item stat() on unopened filehandle %s 6252 6253(W unopened) You tried to use the stat() function on a filehandle that 6254was either never opened or has since been closed. 6255 6256=item Strings with code points over 0xFF may not be mapped into in-memory file handles 6257 6258(W utf8) You tried to open a reference to a scalar for read or append 6259where the scalar contained code points over 0xFF. In-memory files 6260model on-disk files and can only contain bytes. 6261 6262=item Stub found while resolving method "%s" overloading "%s" in package "%s" 6263 6264(P) Overloading resolution over @ISA tree may be broken by importation 6265stubs. Stubs should never be implicitly created, but explicit calls to 6266C<can> may break this. 6267 6268=item Subroutine attributes must come before the signature 6269 6270(F) When subroutine signatures are enabled, any subroutine attributes must 6271come before the signature. Note that this order was the opposite in 6272versions 5.22..5.26. So: 6273 6274 sub foo :lvalue ($x, $y) { ... } # 5.20 and 5.28 + 6275 sub foo ($x, $y) :lvalue { ... } # 5.22 .. 5.26 6276 6277=item Subroutine "&%s" is not available 6278 6279(W closure) During compilation, an inner named subroutine or eval is 6280attempting to capture an outer lexical subroutine that is not currently 6281available. This can happen for one of two reasons. First, the lexical 6282subroutine may be declared in an outer anonymous subroutine that has 6283not yet been created. (Remember that named subs are created at compile 6284time, while anonymous subs are created at run-time.) For example, 6285 6286 sub { my sub a {...} sub f { \&a } } 6287 6288At the time that f is created, it can't capture the current "a" sub, 6289since the anonymous subroutine hasn't been created yet. Conversely, the 6290following won't give a warning since the anonymous subroutine has by now 6291been created and is live: 6292 6293 sub { my sub a {...} eval 'sub f { \&a }' }->(); 6294 6295The second situation is caused by an eval accessing a lexical subroutine 6296that has gone out of scope, for example, 6297 6298 sub f { 6299 my sub a {...} 6300 sub { eval '\&a' } 6301 } 6302 f()->(); 6303 6304Here, when the '\&a' in the eval is being compiled, f() is not currently 6305being executed, so its &a is not available for capture. 6306 6307=item "%s" subroutine &%s masks earlier declaration in same %s 6308 6309(W shadow) A "my" or "state" subroutine has been redeclared in the 6310current scope or statement, effectively eliminating all access to 6311the previous instance. This is almost always a typographical error. 6312Note that the earlier subroutine will still exist until the end of 6313the scope or until all closure references to it are destroyed. 6314 6315=item Subroutine %s redefined 6316 6317(W redefine) You redefined a subroutine. To suppress this warning, say 6318 6319 { 6320 no warnings 'redefine'; 6321 eval "sub name { ... }"; 6322 } 6323 6324=item Subroutine "%s" will not stay shared 6325 6326(W closure) An inner (nested) I<named> subroutine is referencing a "my" 6327subroutine defined in an outer named subroutine. 6328 6329When the inner subroutine is called, it will see the value of the outer 6330subroutine's lexical subroutine as it was before and during the *first* 6331call to the outer subroutine; in this case, after the first call to the 6332outer subroutine is complete, the inner and outer subroutines will no 6333longer share a common value for the lexical subroutine. In other words, 6334it will no longer be shared. This will especially make a difference 6335if the lexical subroutines accesses lexical variables declared in its 6336surrounding scope. 6337 6338This problem can usually be solved by making the inner subroutine 6339anonymous, using the C<sub {}> syntax. When inner anonymous subs that 6340reference lexical subroutines in outer subroutines are created, they 6341are automatically rebound to the current values of such lexical subs. 6342 6343=item Substitution loop 6344 6345(P) The substitution was looping infinitely. (Obviously, a substitution 6346shouldn't iterate more times than there are characters of input, which 6347is what happened.) See the discussion of substitution in 6348L<perlop/"Regexp Quote-Like Operators">. 6349 6350=item Substitution pattern not terminated 6351 6352(F) The lexer couldn't find the interior delimiter of an s/// or s{}{} 6353construct. Remember that bracketing delimiters count nesting level. 6354Missing the leading C<$> from variable C<$s> may cause this error. 6355 6356=item Substitution replacement not terminated 6357 6358(F) The lexer couldn't find the final delimiter of an s/// or s{}{} 6359construct. Remember that bracketing delimiters count nesting level. 6360Missing the leading C<$> from variable C<$s> may cause this error. 6361 6362=item substr outside of string 6363 6364(W substr)(F) You tried to reference a substr() that pointed outside of 6365a string. That is, the absolute value of the offset was larger than the 6366length of the string. See L<perlfunc/substr>. This warning is fatal if 6367substr is used in an lvalue context (as the left hand side of an 6368assignment or as a subroutine argument for example). 6369 6370=item sv_upgrade from type %d down to type %d 6371 6372(P) Perl tried to force the upgrade of an SV to a type which was actually 6373inferior to its current type. 6374 6375=item Switch (?(condition)... contains too many branches in regex; marked by 6376S<<-- HERE> in m/%s/ 6377 6378(F) A (?(condition)if-clause|else-clause) construct can have at most 6379two branches (the if-clause and the else-clause). If you want one or 6380both to contain alternation, such as using C<this|that|other>, enclose 6381it in clustering parentheses: 6382 6383 (?(condition)(?:this|that|other)|else-clause) 6384 6385The S<<-- HERE> shows whereabouts in the regular expression the problem 6386was discovered. See L<perlre>. 6387 6388=item Switch condition not recognized in regex; marked by S<<-- HERE> in 6389m/%s/ 6390 6391(F) The condition part of a (?(condition)if-clause|else-clause) construct 6392is not known. The condition must be one of the following: 6393 6394 (1) (2) ... true if 1st, 2nd, etc., capture matched 6395 (<NAME>) ('NAME') true if named capture matched 6396 (?=...) (?<=...) true if subpattern matches 6397 (?!...) (?<!...) true if subpattern fails to match 6398 (?{ CODE }) true if code returns a true value 6399 (R) true if evaluating inside recursion 6400 (R1) (R2) ... true if directly inside capture group 1, 2, etc. 6401 (R&NAME) true if directly inside named capture 6402 (DEFINE) always false; for defining named subpatterns 6403 6404The S<<-- HERE> shows whereabouts in the regular expression the problem was 6405discovered. See L<perlre>. 6406 6407=item Switch (?(condition)... not terminated in regex; marked by 6408S<<-- HERE> in m/%s/ 6409 6410(F) You omitted to close a (?(condition)...) block somewhere 6411in the pattern. Add a closing parenthesis in the appropriate 6412position. See L<perlre>. 6413 6414=item switching effective %s is not implemented 6415 6416(F) While under the C<use filetest> pragma, we cannot switch the real 6417and effective uids or gids. 6418 6419=item syntax error 6420 6421(F) Probably means you had a syntax error. Common reasons include: 6422 6423 A keyword is misspelled. 6424 A semicolon is missing. 6425 A comma is missing. 6426 An opening or closing parenthesis is missing. 6427 An opening or closing brace is missing. 6428 A closing quote is missing. 6429 6430Often there will be another error message associated with the syntax 6431error giving more information. (Sometimes it helps to turn on B<-w>.) 6432The error message itself often tells you where it was in the line when 6433it decided to give up. Sometimes the actual error is several tokens 6434before this, because Perl is good at understanding random input. 6435Occasionally the line number may be misleading, and once in a blue moon 6436the only way to figure out what's triggering the error is to call 6437C<perl -c> repeatedly, chopping away half the program each time to see 6438if the error went away. Sort of the cybernetic version of S<20 questions>. 6439 6440=item syntax error at line %d: '%s' unexpected 6441 6442(A) You've accidentally run your script through the Bourne shell instead 6443of Perl. Check the #! line, or manually feed your script into Perl 6444yourself. 6445 6446=item syntax error in file %s at line %d, next 2 tokens "%s" 6447 6448(F) This error is likely to occur if you run a perl5 script through 6449a perl4 interpreter, especially if the next 2 tokens are "use strict" 6450or "my $var" or "our $var". 6451 6452=item Syntax error in (?[...]) in regex; marked by <-- HERE in m/%s/ 6453 6454(F) Perl could not figure out what you meant inside this construct; this 6455notifies you that it is giving up trying. 6456 6457=item %s syntax OK 6458 6459(F) The final summary message when a C<perl -c> succeeds. 6460 6461=item sysread() on closed filehandle %s 6462 6463(W closed) You tried to read from a closed filehandle. 6464 6465=item sysread() on unopened filehandle %s 6466 6467(W unopened) You tried to read from a filehandle that was never opened. 6468 6469=item System V %s is not implemented on this machine 6470 6471(F) You tried to do something with a function beginning with "sem", 6472"shm", or "msg" but that System V IPC is not implemented in your 6473machine. In some machines the functionality can exist but be 6474unconfigured. Consult your system support. 6475 6476=item syswrite() on closed filehandle %s 6477 6478(W closed) The filehandle you're writing to got itself closed sometime 6479before now. Check your control flow. 6480 6481=item C<-T> and C<-B> not implemented on filehandles 6482 6483(F) Perl can't peek at the stdio buffer of filehandles when it doesn't 6484know about your kind of stdio. You'll have to use a filename instead. 6485 6486=item Target of goto is too deeply nested 6487 6488(F) You tried to use C<goto> to reach a label that was too deeply nested 6489for Perl to reach. Perl is doing you a favor by refusing. 6490 6491=item telldir() attempted on invalid dirhandle %s 6492 6493(W io) The dirhandle you tried to telldir() is either closed or not really 6494a dirhandle. Check your control flow. 6495 6496=item tell() on unopened filehandle 6497 6498(W unopened) You tried to use the tell() function on a filehandle that 6499was either never opened or has since been closed. 6500 6501=item The crypt() function is unimplemented due to excessive paranoia. 6502 6503(F) Configure couldn't find the crypt() function on your machine, 6504probably because your vendor didn't supply it, probably because they 6505think the U.S. Government thinks it's a secret, or at least that they 6506will continue to pretend that it is. And if you quote me on that, I 6507will deny it. 6508 6509=item The experimental declared_refs feature is not enabled 6510 6511(F) To declare references to variables, as in C<my \%x>, you must first enable 6512the feature: 6513 6514 no warnings "experimental::declared_refs"; 6515 use feature "declared_refs"; 6516 6517=item The %s function is unimplemented 6518 6519(F) The function indicated isn't implemented on this architecture, 6520according to the probings of Configure. 6521 6522=item The private_use feature is experimental 6523 6524(S experimental::private_use) This feature is actually a hook for future 6525use. 6526 6527=item The stat preceding %s wasn't an lstat 6528 6529(F) It makes no sense to test the current stat buffer for symbolic 6530linkhood if the last stat that wrote to the stat buffer already went 6531past the symlink to get to the real file. Use an actual filename 6532instead. 6533 6534=item The Unicode property wildcards feature is experimental 6535 6536(S experimental::uniprop_wildcards) This feature is experimental 6537and its behavior may in any future release of perl. See 6538L<perlunicode/Wildcards in Property Values>. 6539 6540=item The 'unique' attribute may only be applied to 'our' variables 6541 6542(F) This attribute was never supported on C<my> or C<sub> declarations. 6543 6544=item This Perl can't reset CRTL environ elements (%s) 6545 6546=item This Perl can't set CRTL environ elements (%s=%s) 6547 6548(W internal) Warnings peculiar to VMS. You tried to change or delete an 6549element of the CRTL's internal environ array, but your copy of Perl 6550wasn't built with a CRTL that contained the setenv() function. You'll 6551need to rebuild Perl with a CRTL that does, or redefine 6552F<PERL_ENV_TABLES> (see L<perlvms>) so that the environ array isn't the 6553target of the change to 6554%ENV which produced the warning. 6555 6556=item This Perl has not been built with support for randomized hash key traversal but something called Perl_hv_rand_set(). 6557 6558(F) Something has attempted to use an internal API call which 6559depends on Perl being compiled with the default support for randomized hash 6560key traversal, but this Perl has been compiled without it. You should 6561report this warning to the relevant upstream party, or recompile perl 6562with default options. 6563 6564=item This use of my() in false conditional is no longer allowed 6565 6566(F) You used a declaration similar to C<my $x if 0>. There 6567has been a long-standing bug in Perl that causes a lexical variable 6568not to be cleared at scope exit when its declaration includes a false 6569conditional. Some people have exploited this bug to achieve a kind of 6570static variable. Since we intend to fix this bug, we don't want people 6571relying on this behavior. You can achieve a similar static effect by 6572declaring the variable in a separate block outside the function, eg 6573 6574 sub f { my $x if 0; return $x++ } 6575 6576becomes 6577 6578 { my $x; sub f { return $x++ } } 6579 6580Beginning with perl 5.10.0, you can also use C<state> variables to have 6581lexicals that are initialized only once (see L<feature>): 6582 6583 sub f { state $x; return $x++ } 6584 6585This use of C<my()> in a false conditional was deprecated beginning in 6586Perl 5.10 and became a fatal error in Perl 5.30. 6587 6588=item Timeout waiting for another thread to define \p{%s} 6589 6590(F) The first time a user-defined property 6591(L<perlunicode/User-Defined Character Properties>) is used, its 6592definition is looked up and converted into an internal form for more 6593efficient handling in subsequent uses. There could be a race if two or 6594more threads tried to do this processing nearly simultaneously. 6595Instead, a critical section is created around this task, locking out all 6596but one thread from doing it. This message indicates that the thread 6597that is doing the conversion is taking an unexpectedly long time. The 6598timeout exists solely to prevent deadlock; it's long enough that the 6599system was likely thrashing and about to crash. There is no real remedy but 6600rebooting. 6601 6602=item times not implemented 6603 6604(F) Your version of the C library apparently doesn't do times(). I 6605suspect you're not running on Unix. 6606 6607=item "-T" is on the #! line, it must also be used on the command line 6608 6609(X) The #! line (or local equivalent) in a Perl script contains 6610the B<-T> option (or the B<-t> option), but Perl was not invoked with 6611B<-T> in its command line. This is an error because, by the time 6612Perl discovers a B<-T> in a script, it's too late to properly taint 6613everything from the environment. So Perl gives up. 6614 6615If the Perl script is being executed as a command using the #! 6616mechanism (or its local equivalent), this error can usually be 6617fixed by editing the #! line so that the B<-%c> option is a part of 6618Perl's first argument: e.g. change C<perl -n -%c> to C<perl -%c -n>. 6619 6620If the Perl script is being executed as C<perl scriptname>, then the 6621B<-%c> option must appear on the command line: C<perl -%c scriptname>. 6622 6623=item To%s: illegal mapping '%s' 6624 6625(F) You tried to define a customized To-mapping for lc(), lcfirst, 6626uc(), or ucfirst() (or their string-inlined versions), but you 6627specified an illegal mapping. 6628See L<perlunicode/"User-Defined Character Properties">. 6629 6630=item Too deeply nested ()-groups 6631 6632(F) Your template contains ()-groups with a ridiculously deep nesting level. 6633 6634=item Too few args to syscall 6635 6636(F) There has to be at least one argument to syscall() to specify the 6637system call to call, silly dilly. 6638 6639=item Too few arguments for subroutine '%s' (got %d; expected %d) 6640 6641(F) A subroutine using a signature fewer arguments than required by the 6642signature. The caller of the subroutine is presumably at fault. 6643 6644The message attempts to include the name of the called subroutine. If 6645the subroutine has been aliased, the subroutine's original name will be 6646shown, regardless of what name the caller used. It will also indicate the 6647number of arguments given and the number expected. 6648 6649=item Too few arguments for subroutine '%s' (got %d; expected at least %d) 6650 6651Similar to the previous message but for subroutines that accept a variable 6652number of arguments. 6653 6654=item Too late for "-%s" option 6655 6656(X) The #! line (or local equivalent) in a Perl script contains the 6657B<-M>, B<-m> or B<-C> option. 6658 6659In the case of B<-M> and B<-m>, this is an error because those options 6660are not intended for use inside scripts. Use the C<use> pragma instead. 6661 6662The B<-C> option only works if it is specified on the command line as 6663well (with the same sequence of letters or numbers following). Either 6664specify this option on the command line, or, if your system supports 6665it, make your script executable and run it directly instead of passing 6666it to perl. 6667 6668=item Too late to run %s block 6669 6670(W void) A CHECK or INIT block is being defined during run time proper, 6671when the opportunity to run them has already passed. Perhaps you are 6672loading a file with C<require> or C<do> when you should be using C<use> 6673instead. Or perhaps you should put the C<require> or C<do> inside a 6674BEGIN block. 6675 6676=item Too many args to syscall 6677 6678(F) Perl supports a maximum of only 14 args to syscall(). 6679 6680=item Too many arguments for %s 6681 6682(F) The function requires fewer arguments than you specified. 6683 6684=item Too many arguments for subroutine '%s' (got %d; expected %d) 6685 6686(F) A subroutine using a signature received more arguments than permitted 6687by the signature. The caller of the subroutine is presumably at fault. 6688 6689The message attempts to include the name of the called subroutine. If the 6690subroutine has been aliased, the subroutine's original name will be shown, 6691regardless of what name the caller used. It will also indicate the number 6692of arguments given and the number expected. 6693 6694=item Too many arguments for subroutine '%s' (got %d; expected at most %d) 6695 6696Similar to the previous message but for subroutines that accept a variable 6697number of arguments. 6698 6699=item Too many nested open parens in regex; marked by <-- HERE in m/%s/ 6700 6701(F) You have exceeded the number of open C<"("> parentheses that haven't 6702been matched by corresponding closing ones. This limit prevents eating 6703up too much memory. It is initially set to 1000, but may be changed by 6704setting C<${^RE_COMPILE_RECURSION_LIMIT}> to some other value. This may 6705need to be done in a BEGIN block before the regular expression pattern 6706is compiled. 6707 6708=item Too many nested BEGIN blocks, maximum of %d allowed 6709 6710(F) You have executed code that nests too many BEGIN blocks inside of 6711each other, either explicitly as BEGIN{} or implicitly as use statements. 6712This limit defaults to a rather high number which should not be exceeded 6713in normal circumstances, and triggering likely indicates something is 6714very wrong in your code. For instance infinite recursion of eval and 6715BEGIN blocks is known to trigger this error. 6716 6717If you know that you have good reason to exceed the limit you can change 6718it by setting C<${^MAX_NESTED_EVAL_BEGIN_BLOCKS}> to a different value from 6719the default of 1000. 6720 6721=item Too many capture groups (limit is %d) in regex m/%s/ 6722 6723(F) You have too many capture groups in your regex pattern. You need to rework 6724your pattern to use less capture groups. 6725 6726=item Too many )'s 6727 6728(A) You've accidentally run your script through B<csh> instead of Perl. 6729Check the #! line, or manually feed your script into Perl yourself. 6730 6731=item Too many ('s 6732 6733(A) You've accidentally run your script through B<csh> instead of Perl. 6734Check the #! line, or manually feed your script into Perl yourself. 6735 6736=item Trailing \ in regex m/%s/ 6737 6738(F) The regular expression ends with an unbackslashed backslash. 6739Backslash it. See L<perlre>. 6740 6741=item Transliteration pattern not terminated 6742 6743(F) The lexer couldn't find the interior delimiter of a tr/// or tr[][] 6744or y/// or y[][] construct. Missing the leading C<$> from variables 6745C<$tr> or C<$y> may cause this error. 6746 6747=item Transliteration replacement not terminated 6748 6749(F) The lexer couldn't find the final delimiter of a tr///, tr[][], 6750y/// or y[][] construct. 6751 6752=item Treating %s::INIT block as BEGIN block as workaround 6753 6754(S) A package is using an old version of C<Module::Install::DSL> to 6755install, which makes unsafe assumptions about when INIT blocks will be 6756called. Because C<Module::Install::DSL> is used to install other modules 6757and is difficult to upgrade we have a special workaround in place to 6758deal with this. Unless you are a maintainer of an affected module you 6759can ignore this warning. We emit it only as a sanity check. 6760 6761=item '%s' trapped by operation mask 6762 6763(F) You tried to use an operator from a Safe compartment in which it's 6764disallowed. See L<Safe>. 6765 6766=item truncate not implemented 6767 6768(F) Your machine doesn't implement a file truncation mechanism that 6769Configure knows about. 6770 6771=item try/catch/finally is experimental 6772 6773(S experimental::try) This warning is emitted if you use the C<try> and 6774C<catch> syntax with a C<finally> block. This syntax is currently experimental 6775and its behaviour may change in future releases of Perl. 6776 6777=item Type of arg %d to &CORE::%s must be %s 6778 6779(F) The subroutine in question in the CORE package requires its argument 6780to be a hard reference to data of the specified type. Overloading is 6781ignored, so a reference to an object that is not the specified type, but 6782nonetheless has overloading to handle it, will still not be accepted. 6783 6784=item Type of arg %d to %s must be %s (not %s) 6785 6786(F) This function requires the argument in that position to be of a 6787certain type. Arrays must be @NAME or C<@{EXPR}>. Hashes must be 6788%NAME or C<%{EXPR}>. No implicit dereferencing is allowed--use the 6789{EXPR} forms as an explicit dereference. See L<perlref>. 6790 6791=item umask not implemented 6792 6793(F) Your machine doesn't implement the umask function and you tried to 6794use it to restrict permissions for yourself (EXPR & 0700). 6795 6796=item UNIVERSAL does not export anything 6797 6798(F) You asked UNIVERSAL to export something, but UNIVERSAL is the 6799base class for all classes and contains no exportable symbols. 6800 6801=item Unbalanced context: %d more PUSHes than POPs 6802 6803(S internal) The exit code detected an internal inconsistency in how 6804many execution contexts were entered and left. 6805 6806=item Unbalanced saves: %d more saves than restores 6807 6808(S internal) The exit code detected an internal inconsistency in how 6809many values were temporarily localized. 6810 6811=item Unbalanced scopes: %d more ENTERs than LEAVEs 6812 6813(S internal) The exit code detected an internal inconsistency in how 6814many blocks were entered and left. 6815 6816=item Unbalanced string table refcount: (%d) for "%s" 6817 6818(S internal) On exit, Perl found some strings remaining in the shared 6819string table used for copy on write and for hash keys. The entries 6820should have been freed, so this indicates a bug somewhere. 6821 6822=item Unbalanced tmps: %d more allocs than frees 6823 6824(S internal) The exit code detected an internal inconsistency in how 6825many mortal scalars were allocated and freed. 6826 6827=item Undefined format "%s" called 6828 6829(F) The format indicated doesn't seem to exist. Perhaps it's really in 6830another package? See L<perlform>. 6831 6832=item Undefined sort subroutine "%s" called 6833 6834(F) The sort comparison routine specified doesn't seem to exist. 6835Perhaps it's in a different package? See L<perlfunc/sort>. 6836 6837=item Undefined subroutine &%s called 6838 6839(F) The subroutine indicated hasn't been defined, or if it was, it has 6840since been undefined. 6841 6842=item Undefined subroutine called 6843 6844(F) The anonymous subroutine you're trying to call hasn't been defined, 6845or if it was, it has since been undefined. 6846 6847=item Undefined subroutine in sort 6848 6849(F) The sort comparison routine specified is declared but doesn't seem 6850to have been defined yet. See L<perlfunc/sort>. 6851 6852=item Undefined top format "%s" called 6853 6854(F) The format indicated doesn't seem to exist. Perhaps it's really in 6855another package? See L<perlform>. 6856 6857=item Undefined value assigned to typeglob 6858 6859(W misc) An undefined value was assigned to a typeglob, a la 6860C<*foo = undef>. This does nothing. It's possible that you really mean 6861C<undef *foo>. 6862 6863=item %s: Undefined variable 6864 6865(A) You've accidentally run your script through B<csh> instead of Perl. 6866Check the #! line, or manually feed your script into Perl yourself. 6867 6868=item Unescaped left brace in regex is illegal here in regex; 6869marked by S<<-- HERE> in m/%s/ 6870 6871(F) The simple rule to remember, if you want to 6872match a literal C<"{"> character (U+007B C<LEFT CURLY BRACKET>) in a 6873regular expression pattern, is to escape each literal instance of it in 6874some way. Generally easiest is to precede it with a backslash, like 6875C<"\{"> or enclose it in square brackets (C<"[{]">). If the pattern 6876delimiters are also braces, any matching right brace (C<"}">) should 6877also be escaped to avoid confusing the parser, for example, 6878 6879 qr{abc\{def\}ghi} 6880 6881Forcing literal C<"{"> characters to be escaped enables the Perl 6882language to be extended in various ways in future releases. To avoid 6883needlessly breaking existing code, the restriction is not enforced in 6884contexts where there are unlikely to ever be extensions that could 6885conflict with the use there of C<"{"> as a literal. Those that are 6886not potentially ambiguous do not warn; those that are do raise a 6887non-deprecation warning. 6888 6889The contexts where no warnings or errors are raised are: 6890 6891=over 4 6892 6893=item * 6894 6895as the first character in a pattern, or following C<"^"> indicating to 6896anchor the match to the beginning of a line. 6897 6898=item * 6899 6900as the first character following a C<"|"> indicating alternation. 6901 6902=item * 6903 6904as the first character in a parenthesized grouping like 6905 6906 /foo({bar)/ 6907 /foo(?:{bar)/ 6908 6909=item * 6910 6911as the first character following a quantifier 6912 6913 /\s*{/ 6914 6915=back 6916 6917=for comment 6918The text of the message above is mostly duplicated below (with changes) 6919to allow splain (and 'use diagnostics') to work. Since one is fatal, 6920and one not, they can't be combined as one message. Perhaps perldiag 6921could be enhanced to handle this case. 6922 6923=item Unescaped left brace in regex is passed through in regex; marked by S<<-- HERE> in m/%s/ 6924 6925(W regexp) The simple rule to remember, if you want to 6926match a literal C<"{"> character (U+007B C<LEFT CURLY BRACKET>) in a 6927regular expression pattern, is to escape each literal instance of it in 6928some way. Generally easiest is to precede it with a backslash, like 6929C<"\{"> or enclose it in square brackets (C<"[{]">). If the pattern 6930delimiters are also braces, any matching right brace (C<"}">) should 6931also be escaped to avoid confusing the parser, for example, 6932 6933 qr{abc\{def\}ghi} 6934 6935Forcing literal C<"{"> characters to be escaped enables the Perl 6936language to be extended in various ways in future releases. To avoid 6937needlessly breaking existing code, the restriction is not enforced in 6938contexts where there are unlikely to ever be extensions that could 6939conflict with the use there of C<"{"> as a literal. Those that are 6940not potentially ambiguous do not warn; those that are raise this 6941warning. This makes sure that an inadvertent typo doesn't silently 6942cause the pattern to compile to something unintended. 6943 6944The contexts where no warnings or errors are raised are: 6945 6946=over 4 6947 6948=item * 6949 6950as the first character in a pattern, or following C<"^"> indicating to 6951anchor the match to the beginning of a line. 6952 6953=item * 6954 6955as the first character following a C<"|"> indicating alternation. 6956 6957=item * 6958 6959as the first character in a parenthesized grouping like 6960 6961 /foo({bar)/ 6962 /foo(?:{bar)/ 6963 6964=item * 6965 6966as the first character following a quantifier 6967 6968 /\s*{/ 6969 6970=back 6971 6972=item Unescaped literal '%c' in regex; marked by <-- HERE in m/%s/ 6973 6974(W regexp) (only under C<S<use re 'strict'>>) 6975 6976Within the scope of C<S<use re 'strict'>> in a regular expression 6977pattern, you included an unescaped C<}> or C<]> which was interpreted 6978literally. These two characters are sometimes metacharacters, and 6979sometimes literals, depending on what precedes them in the 6980pattern. This is unlike the similar C<)> which is always a 6981metacharacter unless escaped. 6982 6983This action at a distance, perhaps a large distance, can lead to Perl 6984silently misinterpreting what you meant, so when you specify that you 6985want extra checking by C<S<use re 'strict'>>, this warning is generated. 6986If you meant the character as a literal, simply confirm that to Perl by 6987preceding the character with a backslash, or make it into a bracketed 6988character class (like C<[}]>). If you meant it as closing a 6989corresponding C<[> or C<{>, you'll need to look back through the pattern 6990to find out why that isn't happening. 6991 6992=item unexec of %s into %s failed! 6993 6994(F) The unexec() routine failed for some reason. See your local FSF 6995representative, who probably put it there in the first place. 6996 6997=item Unexpected binary operator '%c' with no preceding operand in regex; 6998marked by S<<-- HERE> in m/%s/ 6999 7000(F) You had something like this: 7001 7002 (?[ | \p{Digit} ]) 7003 7004where the C<"|"> is a binary operator with an operand on the right, but 7005no operand on the left. 7006 7007=item Unexpected character in regex; marked by S<<-- HERE> in m/%s/ 7008 7009(F) You had something like this: 7010 7011 (?[ z ]) 7012 7013Within C<(?[ ])>, no literal characters are allowed unless they are 7014within an inner pair of square brackets, like 7015 7016 (?[ [ z ] ]) 7017 7018Another possibility is that you forgot a backslash. Perl isn't smart 7019enough to figure out what you really meant. 7020 7021=item Unexpected characters while parsing class :isa attribute: %s 7022 7023(F) You tried to specify something other than a single class name with an 7024optional trailing verison number as the value for a C<class> C<:isa> 7025attribute. This confused the parser. 7026 7027=item Unexpected exit %u 7028 7029(S) exit() was called or the script otherwise finished gracefully when 7030C<PERL_EXIT_WARN> was set in C<PL_exit_flags>. 7031 7032=item Unexpected exit failure %d 7033 7034(S) An uncaught die() was called when C<PERL_EXIT_WARN> was set in 7035C<PL_exit_flags>. 7036 7037=item Unexpected ')' in regex; marked by S<<-- HERE> in m/%s/ 7038 7039(F) You had something like this: 7040 7041 (?[ ( \p{Digit} + ) ]) 7042 7043The C<")"> is out-of-place. Something apparently was supposed to 7044be combined with the digits, or the C<"+"> shouldn't be there, or 7045something like that. Perl can't figure out what was intended. 7046 7047=item Unexpected ']' with no following ')' in (?[... in regex; marked by 7048<-- HERE in m/%s/ 7049 7050(F) While parsing an extended character class a ']' character was 7051encountered at a point in the definition where the only legal use of 7052']' is to close the character class definition as part of a '])', you 7053may have forgotten the close paren, or otherwise confused the parser. 7054 7055=item Unexpected '(' with no preceding operator in regex; marked by 7056S<<-- HERE> in m/%s/ 7057 7058(F) You had something like this: 7059 7060 (?[ \p{Digit} ( \p{Lao} + \p{Thai} ) ]) 7061 7062There should be an operator before the C<"(">, as there's 7063no indication as to how the digits are to be combined 7064with the characters in the Lao and Thai scripts. 7065 7066=item Unicode non-character U+%X is not recommended for open interchange 7067 7068(S nonchar) Certain codepoints, such as U+FFFE and U+FFFF, are 7069defined by the Unicode standard to be non-characters. Those 7070are legal codepoints, but are reserved for internal use; so, 7071applications shouldn't attempt to exchange them. An application 7072may not be expecting any of these characters at all, and receiving 7073them may lead to bugs. If you know what you are doing you can 7074turn off this warning by C<no warnings 'nonchar';>. 7075 7076This is not really a "severe" error, but it is supposed to be 7077raised by default even if warnings are not enabled, and currently 7078the only way to do that in Perl is to mark it as serious. 7079 7080=item Unicode property wildcard not terminated 7081 7082(F) A Unicode property wildcard looks like a delimited regular 7083expression pattern (all within the braces of the enclosing C<\p{...}>. 7084The closing delimtter to match the opening one was not found. If the 7085opening one is escaped by preceding it with a backslash, the closing one 7086must also be so escaped. 7087 7088=item Unicode string properties are not implemented in (?[...]) in 7089regex; marked by <-- HERE in m/%s/ 7090 7091(F) A Unicode string property is one which expands to a sequence of 7092multiple characters. An example is C<\p{name=KATAKANA LETTER AINU P}>, 7093which consists of the sequence C<\N{KATAKANA LETTER SMALL H}> 7094followed by C<\N{COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK}>. 7095Extended character classes, C<(?[...])> currently cannot handle these. 7096 7097=item Unicode surrogate U+%X is illegal in UTF-8 7098 7099(S surrogate) You had a UTF-16 surrogate in a context where they are 7100not considered acceptable. These code points, between U+D800 and 7101U+DFFF (inclusive), are used by Unicode only for UTF-16. However, Perl 7102internally allows all unsigned integer code points (up to the size limit 7103available on your platform), including surrogates. But these can cause 7104problems when being input or output, which is likely where this message 7105came from. If you really really know what you are doing you can turn 7106off this warning by C<no warnings 'surrogate';>. 7107 7108=item Unimplemented 7109 7110(F) In Perl 5.12 and above, you have executed an 7111L<ellipsis statement|perlsyn/"The Ellipsis Statement">. This is a 7112bare C<...;>, meant to be used to allow you to outline code that 7113is to be written, but is not complete, similar to the following: 7114 7115 sub not_done_yet { 7116 my($self, $arg1, $arg2) = @_; 7117 ... 7118 } 7119 7120If C<not_done_yet()> is called, Perl will die with an C<Unimplemented> error 7121at the line containing C<...>. 7122 7123=item Unknown charname '%s' 7124 7125(F) The name you used inside C<\N{}> is unknown to Perl. Check the 7126spelling. You can say C<use charnames ":loose"> to not have to be 7127so precise about spaces, hyphens, and capitalization on standard Unicode 7128names. (Any custom aliases that have been created must be specified 7129exactly, regardless of whether C<:loose> is used or not.) This error may 7130also happen if the C<\N{}> is not in the scope of the corresponding 7131C<S<use charnames>>. 7132 7133=item Unknown '(*...)' construct '%s' in regex; marked by <-- HERE in m/%s/ 7134 7135(F) The C<(*> was followed by something that the regular expression 7136compiler does not recognize. Check your spelling. 7137 7138=item Unknown error 7139 7140(P) Perl was about to print an error message in C<$@>, but the C<$@> variable 7141did not exist, even after an attempt to create it. 7142 7143=item Unknown locale category %d 7144 7145=item Unknown locale category %d; can't set it to %s 7146 7147(W locale) You used a locale category that perl doesn't recognize, so it 7148cannot carry out your request. Check that you are using a valid 7149category. If so, see L<perllocale/Multi-threaded> for advice on 7150reporting this as a bug, and for modifying perl locally to accommodate 7151your needs. 7152 7153=item Unknown open() mode '%s' 7154 7155(F) The second argument of 3-argument open() is not among the list 7156of valid modes: C<< < >>, C<< > >>, C<<< >> >>>, C<< +< >>, 7157C<< +> >>, C<<< +>> >>>, C<-|>, C<|->, C<< <& >>, C<< >& >>. 7158 7159=item Unknown PerlIO layer "%s" 7160 7161(W layer) An attempt was made to push an unknown layer onto the Perl I/O 7162system. (Layers take care of transforming data between external and 7163internal representations.) Note that some layers, such as C<mmap>, 7164are not supported in all environments. If your program didn't 7165explicitly request the failing operation, it may be the result of the 7166value of the environment variable PERLIO. 7167 7168=item Unknown process %x sent message to prime_env_iter: %s 7169 7170(P) An error peculiar to VMS. Perl was reading values for %ENV before 7171iterating over it, and someone else stuck a message in the stream of 7172data Perl expected. Someone's very confused, or perhaps trying to 7173subvert Perl's population of %ENV for nefarious purposes. 7174 7175=item Unknown regexp modifier "/%s" 7176 7177(F) Alphanumerics immediately following the closing delimiter 7178of a regular expression pattern are interpreted by Perl as modifier 7179flags for the regex. One of the ones you specified is invalid. One way 7180this can happen is if you didn't put in white space between the end of 7181the regex and a following alphanumeric operator: 7182 7183 if ($x =~ /foo/and $bar == 3) { ... } 7184 7185The C<"a"> is a valid modifier flag, but the C<"n"> is not, and raises 7186this error. Likely what was meant instead was: 7187 7188 if ($x =~ /foo/ and $bar == 3) { ... } 7189 7190=item Unknown "re" subpragma '%s' (known ones are: %s) 7191 7192(W) You tried to use an unknown subpragma of the "re" pragma. 7193 7194=item Unknown switch condition (?(...)) in regex; marked by S<<-- HERE> in 7195m/%s/ 7196 7197(F) The condition part of a (?(condition)if-clause|else-clause) construct 7198is not known. The condition must be one of the following: 7199 7200 (1) (2) ... true if 1st, 2nd, etc., capture matched 7201 (<NAME>) ('NAME') true if named capture matched 7202 (?=...) (?<=...) true if subpattern matches 7203 (*pla:...) (*plb:...) true if subpattern matches; also 7204 (*positive_lookahead:...) 7205 (*positive_lookbehind:...) 7206 (*nla:...) (*nlb:...) true if subpattern fails to match; also 7207 (*negative_lookahead:...) 7208 (*negative_lookbehind:...) 7209 (?{ CODE }) true if code returns a true value 7210 (R) true if evaluating inside recursion 7211 (R1) (R2) ... true if directly inside capture group 1, 2, 7212 etc. 7213 (R&NAME) true if directly inside named capture 7214 (DEFINE) always false; for defining named subpatterns 7215 7216The S<<-- HERE> shows whereabouts in the regular expression the problem was 7217discovered. See L<perlre>. 7218 7219=item Unknown Unicode option letter '%c' 7220 7221(F) You specified an unknown Unicode option. See 7222L<perlrun|perlrun/-C [numberE<sol>list]> documentation of the C<-C> switch 7223for the list of known options. 7224 7225=item Unknown Unicode option value %d 7226 7227(F) You specified an unknown Unicode option. See 7228L<perlrun|perlrun/-C [numberE<sol>list]> documentation of the C<-C> switch 7229for the list of known options. 7230 7231=item Unknown user-defined property name \p{%s} 7232 7233(F) You specified to use a property within the C<\p{...}> which was a 7234syntactically valid user-defined property, but no definition was found 7235for it by the time one was required to proceed. Check your spelling. 7236See L<perlunicode/User-Defined Character Properties>. 7237 7238=item Unknown verb pattern '%s' in regex; marked by S<<-- HERE> in m/%s/ 7239 7240(F) You either made a typo or have incorrectly put a C<*> quantifier 7241after an open brace in your pattern. Check the pattern and review 7242L<perlre> for details on legal verb patterns. 7243 7244=item Unknown warnings category '%s' 7245 7246(F) An error issued by the C<warnings> pragma. You specified a warnings 7247category that is unknown to perl at this point. 7248 7249Note that if you want to enable a warnings category registered by a 7250module (e.g. C<use warnings 'File::Find'>), you must have loaded this 7251module first. 7252 7253=item Unmatched [ in regex; marked by S<<-- HERE> in m/%s/ 7254 7255(F) The brackets around a character class must match. If you wish to 7256include a closing bracket in a character class, backslash it or put it 7257first. The S<<-- HERE> shows whereabouts in the regular expression the 7258problem was discovered. See L<perlre>. 7259 7260=item Unmatched ( in regex; marked by S<<-- HERE> in m/%s/ 7261 7262=item Unmatched ) in regex; marked by S<<-- HERE> in m/%s/ 7263 7264(F) Unbackslashed parentheses must always be balanced in regular 7265expressions. If you're a vi user, the % key is valuable for finding 7266the matching parenthesis. The S<<-- HERE> shows whereabouts in the 7267regular expression the problem was discovered. See L<perlre>. 7268 7269=item Unmatched right %s bracket 7270 7271(F) The lexer counted more closing curly or square brackets than opening 7272ones, so you're probably missing a matching opening bracket. As a 7273general rule, you'll find the missing one (so to speak) near the place 7274you were last editing. 7275 7276=item Unquoted string "%s" may clash with future reserved word 7277 7278(W reserved) You used a bareword that might someday be claimed as a 7279reserved word. It's best to put such a word in quotes, or capitalize it 7280somehow, or insert an underbar into it. You might also declare it as a 7281subroutine. 7282 7283=item Unrecognized character %s; marked by S<<-- HERE> after %s near column 7284%d 7285 7286(F) The Perl parser has no idea what to do with the specified character 7287in your Perl script (or eval) near the specified column. Perhaps you 7288tried to run a compressed script, a binary program, or a directory as 7289a Perl program. 7290 7291=item Unrecognized class attribute %s 7292 7293(F) You attempted to add a named attribute to a C<class> definition, but 7294perl does not recognise the name of the requested attribute. 7295 7296=item Unrecognized escape \%c in character class in regex; marked by 7297S<<-- HERE> in m/%s/ 7298 7299(F) You used a backslash-character combination which is not 7300recognized by Perl inside character classes. This is a fatal 7301error when the character class is used within C<(?[ ])>. 7302 7303=item Unrecognized escape \%c in character class passed through in regex; 7304marked by S<<-- HERE> in m/%s/ 7305 7306(W regexp) You used a backslash-character combination which is not 7307recognized by Perl inside character classes. The character was 7308understood literally, but this may change in a future version of Perl. 7309The S<<-- HERE> shows whereabouts in the regular expression the 7310escape was discovered. 7311 7312=item Unrecognized escape \%c passed through 7313 7314(W misc) You used a backslash-character combination which is not 7315recognized by Perl. The character was understood literally, but this may 7316change in a future version of Perl. 7317 7318=item Unrecognized escape \%s passed through in regex; marked by 7319S<<-- HERE> in m/%s/ 7320 7321(W regexp) You used a backslash-character combination which is not 7322recognized by Perl. The character(s) were understood literally, but 7323this may change in a future version of Perl. The S<<-- HERE> shows 7324whereabouts in the regular expression the escape was discovered. 7325 7326=item Unrecognized field attribute %s 7327 7328(F) You attempted to add a named attribute to a C<field> definition, but 7329perl does not recognise the name of the requested attribute. 7330 7331=item Unrecognised parameters for "%s" constructor: %s 7332 7333(F) You called new on a class but supplied a parameter name that 7334didn't match a class field name. 7335 7336=item Unrecognized signal name "%s" 7337 7338(F) You specified a signal name to the kill() function that was not 7339recognized. Say C<kill -l> in your shell to see the valid signal names 7340on your system. 7341 7342=item Unrecognized switch: -%s (-h will show valid options) 7343 7344(F) You specified an illegal option to Perl. Don't do that. (If you 7345think you didn't do that, check the #! line to see if it's supplying the 7346bad switch on your behalf.) 7347 7348=item Unsuccessful %s on filename containing newline 7349 7350(W newline) A file operation was attempted on a filename, and that 7351operation failed, PROBABLY because the filename contained a newline, 7352PROBABLY because you forgot to chomp() it off. See L<perlfunc/chomp>. 7353 7354=item Unsupported directory function "%s" called 7355 7356(F) Your machine doesn't support opendir() and readdir(). 7357 7358=item Unsupported function %s 7359 7360(F) This machine doesn't implement the indicated function, apparently. 7361At least, Configure doesn't think so. 7362 7363=item Unsupported function fork 7364 7365(F) Your version of executable does not support forking. 7366 7367Note that under some systems, like OS/2, there may be different flavors 7368of Perl executables, some of which may support fork, some not. Try 7369changing the name you call Perl by to C<perl_>, C<perl__>, and so on. 7370 7371=item Unsupported script encoding %s 7372 7373(F) Your program file begins with a Unicode Byte Order Mark (BOM) which 7374declares it to be in a Unicode encoding that Perl cannot read. 7375 7376=item Unsupported socket function "%s" called 7377 7378(F) Your machine doesn't support the Berkeley socket mechanism, or at 7379least that's what Configure thought. 7380 7381=item Unterminated '(*...' argument in regex; marked by <-- HERE in m/%s/ 7382 7383(F) You used a pattern of the form C<(*...:...)> but did not terminate 7384the pattern with a C<)>. Fix the pattern and retry. 7385 7386=item Unterminated attribute list 7387 7388(F) The lexer found something other than a simple identifier at the 7389start of an attribute, and it wasn't a semicolon or the start of a 7390block. Perhaps you terminated the parameter list of the previous 7391attribute too soon. See L<attributes>. 7392 7393=item Unterminated attribute parameter in attribute list 7394 7395(F) The lexer saw an opening (left) parenthesis character while parsing 7396an attribute list, but the matching closing (right) parenthesis 7397character was not found. You may need to add (or remove) a backslash 7398character to get your parentheses to balance. See L<attributes>. 7399 7400=item Unterminated compressed integer 7401 7402(F) An argument to unpack("w",...) was incompatible with the BER 7403compressed integer format and could not be converted to an integer. 7404See L<perlfunc/pack>. 7405 7406=item Unterminated '(*...' construct in regex; marked by <-- HERE in m/%s/ 7407 7408(F) You used a pattern of the form C<(*...)> but did not terminate 7409the pattern with a C<)>. Fix the pattern and retry. 7410 7411=item Unterminated delimiter for here document 7412 7413(F) This message occurs when a here document label has an initial 7414quotation mark but the final quotation mark is missing. Perhaps 7415you wrote: 7416 7417 <<"foo 7418 7419instead of: 7420 7421 <<"foo" 7422 7423=item Unterminated \g... pattern in regex; marked by S<<-- HERE> in m/%s/ 7424 7425=item Unterminated \g{...} pattern in regex; marked by S<<-- HERE> in m/%s/ 7426 7427(F) In a regular expression, you had a C<\g> that wasn't followed by a 7428proper group reference. In the case of C<\g{>, the closing brace is 7429missing; otherwise the C<\g> must be followed by an integer. Fix the 7430pattern and retry. 7431 7432=item Unterminated <> operator 7433 7434(F) The lexer saw a left angle bracket in a place where it was expecting 7435a term, so it's looking for the corresponding right angle bracket, and 7436not finding it. Chances are you left some needed parentheses out 7437earlier in the line, and you really meant a "less than". 7438 7439=item Unterminated verb pattern argument in regex; marked by S<<-- HERE> in 7440m/%s/ 7441 7442(F) You used a pattern of the form C<(*VERB:ARG)> but did not terminate 7443the pattern with a C<)>. Fix the pattern and retry. 7444 7445=item Unterminated verb pattern in regex; marked by S<<-- HERE> in m/%s/ 7446 7447(F) You used a pattern of the form C<(*VERB)> but did not terminate 7448the pattern with a C<)>. Fix the pattern and retry. 7449 7450=item untie attempted while %d inner references still exist 7451 7452(W untie) A copy of the object returned from C<tie> (or C<tied>) was 7453still valid when C<untie> was called. 7454 7455=item Usage: POSIX::%s(%s) 7456 7457(F) You called a POSIX function with incorrect arguments. 7458See L<POSIX/FUNCTIONS> for more information. 7459 7460=item Usage: Win32::%s(%s) 7461 7462(F) You called a Win32 function with incorrect arguments. 7463See L<Win32> for more information. 7464 7465=item $[ used in %s (did you mean $] ?) 7466 7467(W syntax) You used C<$[> in a comparison, such as: 7468 7469 if ($[ > 5.006) { 7470 ... 7471 } 7472 7473You probably meant to use C<$]> instead. C<$[> is the base for indexing 7474arrays. C<$]> is the Perl version number in decimal. 7475 7476=item Use "%s" instead of "%s" 7477 7478(F) The second listed construct is no longer legal. Use the first one 7479instead. 7480 7481=item Useless assignment to a temporary 7482 7483(W misc) You assigned to an lvalue subroutine, but what 7484the subroutine returned was a temporary scalar about to 7485be discarded, so the assignment had no effect. 7486 7487=item Useless (?-%s) - don't use /%s modifier in regex; marked by 7488S<<-- HERE> in m/%s/ 7489 7490(W regexp) You have used an internal modifier such as (?-o) that has no 7491meaning unless removed from the entire regexp: 7492 7493 if ($string =~ /(?-o)$pattern/o) { ... } 7494 7495must be written as 7496 7497 if ($string =~ /$pattern/) { ... } 7498 7499The S<<-- HERE> shows whereabouts in the regular expression the problem was 7500discovered. See L<perlre>. 7501 7502=item Useless localization of %s 7503 7504(W syntax) The localization of lvalues such as C<local($x=10)> is legal, 7505but in fact the local() currently has no effect. This may change at 7506some point in the future, but in the meantime such code is discouraged. 7507 7508=item Useless (?%s) - use /%s modifier in regex; marked by S<<-- HERE> in 7509m/%s/ 7510 7511(W regexp) You have used an internal modifier such as (?o) that has no 7512meaning unless applied to the entire regexp: 7513 7514 if ($string =~ /(?o)$pattern/) { ... } 7515 7516must be written as 7517 7518 if ($string =~ /$pattern/o) { ... } 7519 7520The S<<-- HERE> shows whereabouts in the regular expression the problem was 7521discovered. See L<perlre>. 7522 7523=item Useless use of attribute "const" 7524 7525(W misc) The C<const> attribute has no effect except 7526on anonymous closure prototypes. You applied it to 7527a subroutine via L<attributes.pm|attributes>. This is only useful 7528inside an attribute handler for an anonymous subroutine. 7529 7530=item Useless use of /d modifier in transliteration operator 7531 7532(W misc) You have used the /d modifier where the searchlist has the 7533same length as the replacelist. See L<perlop> for more information 7534about the /d modifier. 7535 7536=item Useless use of \E 7537 7538(W misc) You have a \E in a double-quotish string without a C<\U>, 7539C<\L> or C<\Q> preceding it. 7540 7541=item Useless use of greediness modifier '%c' in regex; marked by S<<-- HERE> in m/%s/ 7542 7543(W regexp) You specified something like these: 7544 7545 qr/a{3}?/ 7546 qr/b{1,1}+/ 7547 7548The C<"?"> and C<"+"> don't have any effect, as they modify whether to 7549match more or fewer when there is a choice, and by specifying to match 7550exactly a given number, there is no room left for a choice. 7551 7552=item Useless use of %s in scalar context 7553 7554(W scalar) You did something whose only interesting return value is a 7555list without a side effect in scalar context, which does not accept a 7556list. 7557 7558For example 7559 7560 my $x = sort @y; 7561 7562This is not very useful, and perl currently optimizes this away. 7563 7564=item Useless use of %s in void context 7565 7566(W void) You did something without a side effect in a context that does 7567nothing with the return value, such as a statement that doesn't return a 7568value from a block, or the left side of a scalar comma operator. Very 7569often this points not to stupidity on your part, but a failure of Perl 7570to parse your program the way you thought it would. For example, you'd 7571get this if you mixed up your C precedence with Python precedence and 7572said 7573 7574 $one, $two = 1, 2; 7575 7576when you meant to say 7577 7578 ($one, $two) = (1, 2); 7579 7580Another common error is to use ordinary parentheses to construct a list 7581reference when you should be using square or curly brackets, for 7582example, if you say 7583 7584 $array = (1,2); 7585 7586when you should have said 7587 7588 $array = [1,2]; 7589 7590The square brackets explicitly turn a list value into a scalar value, 7591while parentheses do not. So when a parenthesized list is evaluated in 7592a scalar context, the comma is treated like C's comma operator, which 7593throws away the left argument, which is not what you want. See 7594L<perlref> for more on this. 7595 7596This warning will not be issued for numerical constants equal to 0 or 1 7597since they are often used in statements like 7598 7599 1 while sub_with_side_effects(); 7600 7601String constants that would normally evaluate to 0 or 1 are warned 7602about. 7603 7604=item Useless use of (?-p) in regex; marked by S<<-- HERE> in m/%s/ 7605 7606(W regexp) The C<p> modifier cannot be turned off once set. Trying to do 7607so is futile. 7608 7609=item Useless use of "re" pragma 7610 7611(W) You did C<use re;> without any arguments. That isn't very useful. 7612 7613=item Useless use of %s with no values 7614 7615(W syntax) You used the push() or unshift() function with no arguments 7616apart from the array, like C<push(@x)> or C<unshift(@foo)>. That won't 7617usually have any effect on the array, so is completely useless. It's 7618possible in principle that push(@tied_array) could have some effect 7619if the array is tied to a class which implements a PUSH method. If so, 7620you can write it as C<push(@tied_array,())> to avoid this warning. 7621 7622=item "use" not allowed in expression 7623 7624(F) The "use" keyword is recognized and executed at compile time, and 7625returns no useful value. See L<perlmod>. 7626 7627=item Use of @_ in %s with signatured subroutine is experimental 7628 7629(S experimental::args_array_with_signatures) An expression involving the 7630C<@_> arguments array was found in a subroutine that uses a signature. 7631This is experimental because the interaction between the arguments 7632array and parameter handling via signatures is not guaranteed to remain 7633stable in any future version of Perl, and such code should be avoided. 7634 7635=item Use of bare << to mean <<"" is forbidden 7636 7637(F) You are now required to use the explicitly quoted form if you wish 7638to use an empty line as the terminator of the here-document. 7639 7640Use of a bare terminator was deprecated in Perl 5.000, and is a fatal 7641error as of Perl 5.28. 7642 7643=item Use of /c modifier is meaningless in s/// 7644 7645(W regexp) You used the /c modifier in a substitution. The /c 7646modifier is not presently meaningful in substitutions. 7647 7648=item Use of /c modifier is meaningless without /g 7649 7650(W regexp) You used the /c modifier with a regex operand, but didn't 7651use the /g modifier. Currently, /c is meaningful only when /g is 7652used. (This may change in the future.) 7653 7654=item Use of code point 0x%s is not allowed; the permissible max is 0x%X 7655 7656=item Use of code point 0x%s is not allowed; the permissible max is 0x%X 7657in regex; marked by <-- HERE in m/%s/ 7658 7659(F) You used a code point that is not allowed, because it is too large. 7660Unicode only allows code points up to 0x10FFFF, but Perl allows much 7661larger ones. Earlier versions of Perl allowed code points above IV_MAX 7662(0x7FFFFFF on 32-bit platforms, 0x7FFFFFFFFFFFFFFF on 64-bit platforms), 7663however, this could possibly break the perl interpreter in some constructs, 7664including causing it to hang in a few cases. 7665 7666If your code is to run on various platforms, keep in mind that the upper 7667limit depends on the platform. It is much larger on 64-bit word sizes 7668than 32-bit ones. 7669 7670The use of out of range code points was deprecated in Perl 5.24, and 7671became a fatal error in Perl 5.28. 7672 7673=item Use of each() on hash after insertion without resetting hash iterator results in undefined behavior 7674 7675(S internal) The behavior of C<each()> after insertion is undefined; 7676it may skip items, or visit items more than once. Consider using 7677C<keys()> instead of C<each()>. 7678 7679=item Use of := for an empty attribute list is not allowed 7680 7681(F) The construction C<my $x := 42> used to parse as equivalent to 7682C<my $x : = 42> (applying an empty attribute list to C<$x>). 7683This construct was deprecated in 5.12.0, and has now been made a syntax 7684error, so C<:=> can be reclaimed as a new operator in the future. 7685 7686If you need an empty attribute list, for example in a code generator, add 7687a space before the C<=>. 7688 7689=item Use of %s for non-UTF-8 locale is wrong. Assuming a UTF-8 locale 7690 7691(W locale) You are matching a regular expression using locale rules, 7692and the specified construct was encountered. This construct is only 7693valid for UTF-8 locales, which the current locale isn't. This doesn't 7694make sense. Perl will continue, assuming a Unicode (UTF-8) locale, but 7695the results are likely to be wrong. 7696 7697=item Use of freed value in iteration 7698 7699(F) Perhaps you modified the iterated array within the loop? 7700This error is typically caused by code like the following: 7701 7702 @a = (3,4); 7703 @a = () for (1,2,@a); 7704 7705You are not supposed to modify arrays while they are being iterated over. 7706For speed and efficiency reasons, Perl internally does not do full 7707reference-counting of iterated items, hence deleting such an item in the 7708middle of an iteration causes Perl to see a freed value. 7709 7710=item Use of /g modifier is meaningless in split 7711 7712(W regexp) You used the /g modifier on the pattern for a C<split> 7713operator. Since C<split> always tries to match the pattern 7714repeatedly, the C</g> has no effect. 7715 7716=item Use of "goto" to jump into a construct is deprecated 7717 7718(D deprecated::goto_construct) Using C<goto> to jump from an outer scope into an inner 7719scope is deprecated and will be removed completely in Perl 5.42. 7720 7721This was deprecated in Perl 5.12. 7722 7723=item Use of '%s' in \p{} or \P{} is deprecated because: %s 7724 7725(D deprecated::unicode_property_name) Certain properties are deprecated 7726by Unicode, and may eventually be removed from the Standard, at which 7727time Perl will follow along. In the meantime, this message is raised to 7728notify you. 7729 7730=item Use of inherited AUTOLOAD for non-method %s::%s() is no longer allowed 7731 7732(F) As an accidental feature, C<AUTOLOAD> subroutines were looked up as 7733methods (using the C<@ISA> hierarchy), even when the subroutines to be 7734autoloaded were called as plain functions (e.g. C<Foo::bar()>), not as 7735methods (e.g. C<< Foo->bar() >> or C<< $obj->bar() >>). 7736 7737This was deprecated in Perl 5.004, and was made fatal in Perl 5.28. 7738 7739=item Use of %s in printf format not supported 7740 7741(F) You attempted to use a feature of printf that is accessible from 7742only C. This usually means there's a better way to do it in Perl. 7743 7744=item Use of '%s' is deprecated as a string delimiter 7745 7746(D deprecated::delimiter_will_be_paired) You used the given character as 7747a starting delimiter of a string outside the scope of 7748S<C<use feature 'extra_paired_delimiters'>>. This character is the 7749mirror image of another Unicode character; within the scope of that 7750feature, the two are considered a pair for delimitting strings. It is 7751planned to make that feature the default, at which point this usage 7752would become illegal; hence this warning. 7753 7754For now, you may live with this warning, or turn it off, but this code 7755will no longer compile in a future version of Perl. Or you can turn on 7756S<C<use feature 'extra_paired_delimiters'>> and use the character that 7757is the mirror image of this one for the closing string delimiter. 7758 7759=item Use of '%s' is experimental as a string delimiter 7760 7761(S experimental::extra_paired_delimiters) This warning is emitted if 7762you use as a string delimiter one of the non-ASCII mirror image ones 7763enabled by S<C<use feature 'extra_paired_delimiters'>>. Simply suppress 7764the warning if you want to use the feature, but know that in doing so 7765you are taking the risk of using an experimental feature which may 7766change or be removed in a future Perl version: 7767 7768=item Use of %s is not allowed in Unicode property wildcard 7769subpatterns in regex; marked by S<<-- HERE> in m/%s/ 7770 7771(F) You were using a wildcard subpattern a Unicode property value, and 7772the subpattern contained something that is illegal. Not all regular 7773expression capabilities are legal in such subpatterns, and this is one. 7774Rewrite your subppattern to not use the offending construct. 7775See L<perlunicode/Wildcards in Property Values>. 7776 7777=item Use of -l on filehandle%s 7778 7779(W io) A filehandle represents an opened file, and when you opened the file 7780it already went past any symlink you are presumably trying to look for. 7781The operation returned C<undef>. Use a filename instead. 7782 7783=item Use of reference "%s" as array index 7784 7785(W misc) You tried to use a reference as an array index; this probably 7786isn't what you mean, because references in numerical context tend 7787to be huge numbers, and so usually indicates programmer error. 7788 7789If you really do mean it, explicitly numify your reference, like so: 7790C<$array[0+$ref]>. This warning is not given for overloaded objects, 7791however, because you can overload the numification and stringification 7792operators and then you presumably know what you are doing. 7793 7794=item Use of strings with code points over 0xFF as arguments to %s 7795operator is not allowed 7796 7797(F) You tried to use one of the string bitwise operators (C<&> or C<|> or C<^> or 7798C<~>) on a string containing a code point over 0xFF. The string bitwise 7799operators treat their operands as strings of bytes, and values beyond 78000xFF are nonsensical in this context. 7801 7802Certain instances became fatal in Perl 5.28; others in perl 5.32. 7803 7804=item Use of strings with code points over 0xFF as arguments to vec is forbidden 7805 7806(F) You tried to use L<C<vec>|perlfunc/vec EXPR,OFFSET,BITS> 7807on a string containing a code point over 0xFF, which is nonsensical here. 7808 7809This became fatal in Perl 5.32. 7810 7811=item Use of tainted arguments in %s is deprecated 7812 7813(W taint, deprecated) You have supplied C<system()> or C<exec()> with multiple 7814arguments and at least one of them is tainted. This used to be allowed 7815but will become a fatal error in a future version of perl. Untaint your 7816arguments. See L<perlsec>. 7817 7818=item Use of unassigned code point or non-standalone grapheme for a 7819delimiter is not allowed 7820 7821(F) 7822A grapheme is what appears to a native-speaker of a language to be a 7823character. In Unicode (and hence Perl) a grapheme may actually be 7824several adjacent characters that together form a complete grapheme. For 7825example, there can be a base character, like "R" and an accent, like a 7826circumflex "^", that appear when displayed to be a single character with 7827the circumflex hovering over the "R". Perl currently allows things like 7828that circumflex to be delimiters of strings, patterns, I<etc>. When 7829displayed, the circumflex would look like it belongs to the character 7830just to the left of it. In order to move the language to be able to 7831accept graphemes as delimiters, we cannot allow the use of 7832delimiters which aren't graphemes by themselves. Also, a delimiter must 7833already be assigned (or known to be never going to be assigned) to try 7834to future-proof code, for otherwise code that works today would fail to 7835compile if the currently unassigned delimiter ends up being something 7836that isn't a stand-alone grapheme. Because Unicode is never going to 7837assign 7838L<non-character code points|perlunicode/Noncharacter code points>, nor 7839L<code points that are above the legal Unicode maximum| 7840perlunicode/Beyond Unicode code points>, those can be delimiters, and 7841their use is legal. 7842 7843=item Use of uninitialized value%s 7844 7845(W uninitialized) An undefined value was used as if it were already 7846defined. It was interpreted as a "" or a 0, but maybe it was a mistake. 7847To suppress this warning assign a defined value to your variables. 7848 7849To help you figure out what was undefined, perl will try to tell you 7850the name of the variable (if any) that was undefined. In some cases 7851it cannot do this, so it also tells you what operation you used the 7852undefined value in. Note, however, that perl optimizes your program 7853and the operation displayed in the warning may not necessarily appear 7854literally in your program. For example, C<"that $foo"> is usually 7855optimized into C<"that " . $foo>, and the warning will refer to the 7856C<concatenation (.)> operator, even though there is no C<.> in 7857your program. 7858 7859=item "use re 'strict'" is experimental 7860 7861(S experimental::re_strict) The things that are different when a regular 7862expression pattern is compiled under C<'strict'> are subject to change 7863in future Perl releases in incompatible ways. This means that a pattern 7864that compiles today may not in a future Perl release. This warning is 7865to alert you to that risk. 7866 7867=item use VERSION is not permitted while another use VERSION of 5.39 or above is in scope 7868 7869(F) Once you have a C<use VERSION> declaration that calls for a Perl version 7870of at least 5.39, you cannot have a subsequent one while the first is visible, 7871even if it requests a later version. 7872 7873=item use VERSION of 5.39 or above is not permitted while another use VERSION is in scope 7874 7875(F) Once you have a C<use VERSION> declaration in scope, you cannot have a 7876subsequent one that calls for a Perl version of at least 5.39 while the first 7877is visible. 7878 7879=item Use \x{...} for more than two hex characters in regex; marked by 7880S<<-- HERE> in m/%s/ 7881 7882(F) In a regular expression, you said something like 7883 7884 (?[ [ \xBEEF ] ]) 7885 7886Perl isn't sure if you meant this 7887 7888 (?[ [ \x{BEEF} ] ]) 7889 7890or if you meant this 7891 7892 (?[ [ \x{BE} E F ] ]) 7893 7894You need to add either braces or blanks to disambiguate. 7895 7896=item Using just the first character returned by \N{} in character class in 7897regex; marked by S<<-- HERE> in m/%s/ 7898 7899(W regexp) Named Unicode character escapes C<(\N{...})> may return 7900a multi-character sequence. Even though a character class is 7901supposed to match just one character of input, perl will match 7902the whole thing correctly, except when the class is inverted 7903(C<[^...]>), or the escape is the beginning or final end point of 7904a range. For these, what should happen isn't clear at all. In 7905these circumstances, Perl discards all but the first character 7906of the returned sequence, which is not likely what you want. 7907 7908=item Using just the single character results returned by \p{} in 7909(?[...]) in regex; marked by S<<-- HERE> in m/%s/ 7910 7911(W regexp) Extended character classes currently cannot handle operands 7912that evaluate to more than one character. These are removed from the 7913results of the expansion of the C<\p{}>. 7914 7915This situation can happen, for example, in 7916 7917 (?[ \p{name=/KATAKANA/} ]) 7918 7919"KATAKANA LETTER AINU P" is a legal Unicode name (technically a "named 7920sequence"), but it is actually two characters. The above expression 7921with match only the Unicode names containing KATAKANA that represent 7922single characters. 7923 7924=item Using /u for '%s' instead of /%s in regex; marked by S<<-- HERE> in m/%s/ 7925 7926(W regexp) You used a Unicode boundary (C<\b{...}> or C<\B{...}>) in a 7927portion of a regular expression where the character set modifiers C</a> 7928or C</aa> are in effect. These two modifiers indicate an ASCII 7929interpretation, and this doesn't make sense for a Unicode definition. 7930The generated regular expression will compile so that the boundary uses 7931all of Unicode. No other portion of the regular expression is affected. 7932 7933=item Using !~ with %s doesn't make sense 7934 7935(F) Using the C<!~> operator with C<s///r>, C<tr///r> or C<y///r> is 7936currently reserved for future use, as the exact behavior has not 7937been decided. (Simply returning the boolean opposite of the 7938modified string is usually not particularly useful.) 7939 7940=item UTF-16 surrogate U+%X 7941 7942(S surrogate) You had a UTF-16 surrogate in a context where they are 7943not considered acceptable. These code points, between U+D800 and 7944U+DFFF (inclusive), are used by Unicode only for UTF-16. However, Perl 7945internally allows all unsigned integer code points (up to the size limit 7946available on your platform), including surrogates. But these can cause 7947problems when being input or output, which is likely where this message 7948came from. If you really really know what you are doing you can turn 7949off this warning by C<no warnings 'surrogate';>. 7950 7951=item Value of %s can be "0"; test with defined() 7952 7953(W misc) In a conditional expression, you used <HANDLE>, <*> (glob), 7954C<each()>, or C<readdir()> as a boolean value. Each of these constructs 7955can return a value of "0"; that would make the conditional expression 7956false, which is probably not what you intended. When using these 7957constructs in conditional expressions, test their values with the 7958C<defined> operator. 7959 7960=item Value of CLI symbol "%s" too long 7961 7962(W misc) A warning peculiar to VMS. Perl tried to read the value of an 7963%ENV element from a CLI symbol table, and found a resultant string 7964longer than 1024 characters. The return value has been truncated to 79651024 characters. 7966 7967=item Variable "%s" is not available 7968 7969(W closure) During compilation, an inner named subroutine or eval is 7970attempting to capture an outer lexical that is not currently available. 7971This can happen for one of two reasons. First, the outer lexical may be 7972declared in an outer anonymous subroutine that has not yet been created. 7973(Remember that named subs are created at compile time, while anonymous 7974subs are created at run-time.) For example, 7975 7976 sub { my $x; sub f { $x } } 7977 7978At the time that f is created, it can't capture the current value of $x, 7979since the anonymous subroutine hasn't been created yet. Conversely, 7980the following won't give a warning since the anonymous subroutine has by 7981now been created and is live: 7982 7983 sub { my $x; eval 'sub f { $x }' }->(); 7984 7985The second situation is caused by an eval accessing a variable that has 7986gone out of scope, for example, 7987 7988 sub f { 7989 my $x; 7990 sub { eval '$x' } 7991 } 7992 f()->(); 7993 7994Here, when the '$x' in the eval is being compiled, f() is not currently 7995being executed, so its $x is not available for capture. 7996 7997=item Variable "%s" is not imported%s 7998 7999(S misc) With "use strict" in effect, you referred to a global variable 8000that you apparently thought was imported from another module, because 8001something else of the same name (usually a subroutine) is exported by 8002that module. It usually means you put the wrong funny character on the 8003front of your variable. It is also possible you used an "our" variable 8004whose scope has ended. 8005 8006=item Variable length lookbehind not implemented in regex m/%s/ 8007 8008(F) B<This message no longer should be raised as of Perl 5.30.> It is 8009retained in this document as a convenience for people using an earlier 8010Perl version. 8011 8012In Perl 5.30 and earlier, lookbehind is allowed 8013only for subexpressions whose length is fixed and 8014known at compile time. For positive lookbehind, you can use the C<\K> 8015regex construct as a way to get the equivalent functionality. See 8016L<(?<=pattern) and \K in perlre|perlre/\K>. 8017 8018Starting in Perl 5.18, there are non-obvious Unicode rules under C</i> 8019that can match variably, but which you might not think could. For 8020example, the substring C<"ss"> can match the single character LATIN 8021SMALL LETTER SHARP S. Here's a complete list of the current ones 8022affecting ASCII characters: 8023 8024 ASCII 8025 sequence Matches single letter under /i 8026 FF U+FB00 LATIN SMALL LIGATURE FF 8027 FFI U+FB03 LATIN SMALL LIGATURE FFI 8028 FFL U+FB04 LATIN SMALL LIGATURE FFL 8029 FI U+FB01 LATIN SMALL LIGATURE FI 8030 FL U+FB02 LATIN SMALL LIGATURE FL 8031 SS U+00DF LATIN SMALL LETTER SHARP S 8032 U+1E9E LATIN CAPITAL LETTER SHARP S 8033 ST U+FB06 LATIN SMALL LIGATURE ST 8034 U+FB05 LATIN SMALL LIGATURE LONG S T 8035 8036This list is subject to change, but is quite unlikely to. 8037Each ASCII sequence can be any combination of upper- and lowercase. 8038 8039You can avoid this by using a bracketed character class in the 8040lookbehind assertion, like 8041 8042 (?<![sS]t) 8043 (?<![fF]f[iI]) 8044 8045This fools Perl into not matching the ligatures. 8046 8047Another option for Perls starting with 5.16, if you only care about 8048ASCII matches, is to add the C</aa> modifier to the regex. This will 8049exclude all these non-obvious matches, thus getting rid of this message. 8050You can also say 8051 8052 use if $] ge 5.016, re => '/aa'; 8053 8054to apply C</aa> to all regular expressions compiled within its scope. 8055See L<re>. 8056 8057=item Variable length positive lookbehind with capturing is experimental in regex m/%s/ 8058 8059(W) Variable length positive lookbehind with capturing is not well defined. This 8060warning alerts you to the fact that you are using a construct which may 8061change in a future version of perl. See the 8062L<< documentation of Positive Lookbehind in perlre|perlre/"C<(?<=I<pattern>)>" >> 8063for details. You may silence this warning with the following: 8064 8065 no warnings 'experimental::vlb'; 8066 8067=item Variable length negative lookbehind with capturing is experimental in regex m/%s/ 8068 8069(W) Variable length negative lookbehind with capturing is not well defined. This 8070warning alerts you to the fact that you are using a construct which may 8071change in a future version of perl. See the 8072L<< documentation of Negative Lookbehind in perlre|perlre/"C<(?<!I<pattern>)>" >> 8073for details. You may silence this warning with the following: 8074 8075 no warnings 'experimental::vlb'; 8076 8077=item "%s" variable %s masks earlier declaration in same %s 8078 8079(W shadow) A "my", "our", "state" or "field" variable has been redeclared in 8080the current scope or statement, effectively eliminating all access to the 8081previous instance. This is almost always a typographical error. Note 8082that the earlier variable will still exist until the end of the scope 8083or until all closure references to it are destroyed. 8084 8085=item Variable syntax 8086 8087(A) You've accidentally run your script through B<csh> instead 8088of Perl. Check the #! line, or manually feed your script into 8089Perl yourself. 8090 8091=item Variable "%s" will not stay shared 8092 8093(W closure) An inner (nested) I<named> subroutine is referencing a 8094lexical variable defined in an outer named subroutine. 8095 8096When the inner subroutine is called, it will see the value of 8097the outer subroutine's variable as it was before and during the *first* 8098call to the outer subroutine; in this case, after the first call to the 8099outer subroutine is complete, the inner and outer subroutines will no 8100longer share a common value for the variable. In other words, the 8101variable will no longer be shared. 8102 8103This problem can usually be solved by making the inner subroutine 8104anonymous, using the C<sub {}> syntax. When inner anonymous subs that 8105reference variables in outer subroutines are created, they 8106are automatically rebound to the current values of such variables. 8107 8108=item vector argument not supported with alpha versions 8109 8110(S printf) The %vd (s)printf format does not support version objects 8111with alpha parts. 8112 8113=item Verb pattern '%s' has a mandatory argument in regex; marked by 8114S<<-- HERE> in m/%s/ 8115 8116(F) You used a verb pattern that requires an argument. Supply an 8117argument or check that you are using the right verb. 8118 8119=item Verb pattern '%s' may not have an argument in regex; marked by 8120S<<-- HERE> in m/%s/ 8121 8122(F) You used a verb pattern that is not allowed an argument. Remove the 8123argument or check that you are using the right verb. 8124 8125=item Version control conflict marker 8126 8127(F) The parser found a line starting with C<E<lt><<<<<<>, 8128C<E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>>, or C<=======>. These may be left by a 8129version control system to mark conflicts after a failed merge operation. 8130 8131=item Version number must be a constant number 8132 8133(P) The attempt to translate a C<use Module n.n LIST> statement into 8134its equivalent C<BEGIN> block found an internal inconsistency with 8135the version number. 8136 8137=item Version string '%s' contains invalid data; ignoring: '%s' 8138 8139(W misc) The version string contains invalid characters at the end, which 8140are being ignored. 8141 8142=item Warning: something's wrong 8143 8144(W) You passed warn() an empty string (the equivalent of C<warn "">) or 8145you called it with no args and C<$@> was empty. 8146 8147=item Warning: unable to close filehandle %s properly 8148 8149(S) The implicit close() done by an open() got an error indication on 8150the close(). This usually indicates your file system ran out of disk 8151space. 8152 8153=item Warning: unable to close filehandle properly: %s 8154 8155=item Warning: unable to close filehandle %s properly: %s 8156 8157(S io) There were errors during the implicit close() done on a filehandle 8158when its reference count reached zero while it was still open, e.g.: 8159 8160 { 8161 open my $fh, '>', $file or die "open: '$file': $!\n"; 8162 print $fh $data or die "print: $!"; 8163 } # implicit close here 8164 8165Because various errors may only be detected by close() (e.g. buffering could 8166allow the C<print> in this example to return true even when the disk is full), 8167it is dangerous to ignore its result. So when it happens implicitly, perl 8168will signal errors by warning. 8169 8170B<Prior to version 5.22.0, perl ignored such errors>, so the common idiom shown 8171above was liable to cause B<silent data loss>. 8172 8173=item Warning: Use of "%s" without parentheses is ambiguous 8174 8175(S ambiguous) You wrote a unary operator followed by something that 8176looks like a binary operator that could also have been interpreted as a 8177term or unary operator. For instance, if you know that the rand 8178function has a default argument of 1.0, and you write 8179 8180 rand + 5; 8181 8182you may THINK you wrote the same thing as 8183 8184 rand() + 5; 8185 8186but in actual fact, you got 8187 8188 rand(+5); 8189 8190So put in parentheses to say what you really mean. 8191 8192=item when is deprecated 8193 8194(D deprecated::smartmatch) C<when> depends on smartmatch, which is 8195deprecated. Additionally, it has several special cases that may 8196not be immediately obvious, and it will be removed in Perl 5.42. 8197See the explanation 8198under L<perlsyn/Experimental Details on given and when>. 8199 8200=item Wide character in %s 8201 8202(S utf8) Perl met a wide character (ordinal >255) when it wasn't 8203expecting one. This warning is by default on for I/O (like print). 8204 8205If this warning does come from I/O, the easiest 8206way to quiet it is simply to add the C<:utf8> layer, I<e.g.>, 8207S<C<binmode STDOUT, ':utf8'>>. Another way to turn off the warning is 8208to add S<C<no warnings 'utf8';>> but that is often closer to 8209cheating. In general, you are supposed to explicitly mark the 8210filehandle with an encoding, see L<open> and L<perlfunc/binmode>. 8211 8212If the warning comes from other than I/O, this diagnostic probably 8213indicates that incorrect results are being obtained. You should examine 8214your code to determine how a wide character is getting to an operation 8215that doesn't handle them. 8216 8217=item Wide character (U+%X) in %s 8218 8219(W locale) While in a single-byte locale (I<i.e.>, a non-UTF-8 8220one), a multi-byte character was encountered. Perl considers this 8221character to be the specified Unicode code point. Combining non-UTF-8 8222locales and Unicode is dangerous. Almost certainly some characters 8223will have two different representations. For example, in the ISO 8859-7 8224(Greek) locale, the code point 0xC3 represents a Capital Gamma. But so 8225also does 0x393. This will make string comparisons unreliable. 8226 8227You likely need to figure out how this multi-byte character got mixed up 8228with your single-byte locale (or perhaps you thought you had a UTF-8 8229locale, but Perl disagrees). 8230 8231=item Within []-length '%c' not allowed 8232 8233(F) The count in the (un)pack template may be replaced by C<[TEMPLATE]> 8234only if C<TEMPLATE> always matches the same amount of packed bytes that 8235can be determined from the template alone. This is not possible if 8236it contains any of the codes @, /, U, u, w or a *-length. Redesign 8237the template. 8238 8239=item While trying to resolve method call %s->%s() can not locate package "%s" yet it is mentioned in @%s::ISA (perhaps you forgot to load "%s"?) 8240 8241(W syntax) It is possible that the C<@ISA> contains a misspelled or never loaded 8242package name, which can result in perl choosing an unexpected parent 8243class's method to resolve the method call. If this is deliberate you 8244can do something like 8245 8246 @Missing::Package::ISA = (); 8247 8248to silence the warnings, otherwise you should correct the package name, or 8249ensure that the package is loaded prior to the method call. 8250 8251=item %s() with negative argument 8252 8253(S misc) Certain operations make no sense with negative arguments. 8254Warning is given and the operation is not done. 8255 8256=item write() on closed filehandle %s 8257 8258(W closed) The filehandle you're writing to got itself closed sometime 8259before now. Check your control flow. 8260 8261=item %s "\x%X" does not map to Unicode 8262 8263(S utf8) When reading in different encodings, Perl tries to 8264map everything into Unicode characters. The bytes you read 8265in are not legal in this encoding. For example 8266 8267 utf8 "\xE4" does not map to Unicode 8268 8269if you try to read in the a-diaereses Latin-1 as UTF-8. 8270 8271=item 'X' outside of string 8272 8273(F) You had a (un)pack template that specified a relative position before 8274the beginning of the string being (un)packed. See L<perlfunc/pack>. 8275 8276=item 'x' outside of string in unpack 8277 8278(F) You had an unpack template that specified a relative position after 8279the end of the string being unpacked. See L<perlfunc/pack>. 8280 8281=item YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET! 8282 8283(F) And you probably never will, because you probably don't have the 8284sources to your kernel, and your vendor probably doesn't give a rip 8285about what you want. There is a vulnerability anywhere that you have a 8286set-id script, and to close it you need to remove the set-id bit from 8287the script that you're attempting to run. To actually run the script 8288set-id, your best bet is to put a set-id C wrapper around your script. 8289 8290=item You need to quote "%s" 8291 8292(W syntax) You assigned a bareword as a signal handler name: 8293 8294 $SIG{...} = foo; 8295 8296However, this will not make C<sub foo> the signal handler. Instead, Perl 8297will call the subroutine when the assignment is executed and use the 8298returned value as the signal handler, which is probably not what you want. 8299(If it I<is> what you want, put C<()> after the subroutine name to avoid 8300the warning.) 8301 8302To register the subroutine as the signal handler, take a reference to it: 8303 8304 $SIG{...} = \&foo; 8305 8306=item Your random numbers are not that random 8307 8308(F) When trying to initialize the random seed for hashes, Perl could 8309not get any randomness out of your system. This usually indicates 8310Something Very Wrong. 8311 8312=item Zero length \N{} in regex; marked by S<<-- HERE> in m/%s/ 8313 8314(F) Named Unicode character escapes (C<\N{...}>) may return a zero-length 8315sequence. Such an escape was used in an extended character class, i.e. 8316C<(?[...])>, or under C<use re 'strict'>, which is not permitted. Check 8317that the correct escape has been used, and the correct charnames handler 8318is in scope. The S<<-- HERE> shows whereabouts in the regular 8319expression the problem was discovered. 8320 8321=back 8322 8323=head1 SEE ALSO 8324 8325L<warnings>, L<diagnostics>. 8326 8327=cut 8328