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 (optional). 12 (S) A severe warning (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. 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 30Default 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 Allocation too large: %lx 54 55(X) You can't allocate more than 64K on an MS-DOS machine. 56 57=item '!' allowed only after types %s 58 59(F) The '!' is allowed in pack() or unpack() only after certain types. 60See L<perlfunc/pack>. 61 62=item Ambiguous call resolved as CORE::%s(), qualify as such or use & 63 64(W ambiguous) A subroutine you have declared has the same name as a Perl 65keyword, and you have used the name without qualification for calling 66one or the other. Perl decided to call the builtin because the 67subroutine is not imported. 68 69To force interpretation as a subroutine call, either put an ampersand 70before the subroutine name, or qualify the name with its package. 71Alternatively, you can import the subroutine (or pretend that it's 72imported with the C<use subs> pragma). 73 74To silently interpret it as the Perl operator, use the C<CORE::> prefix 75on the operator (e.g. C<CORE::log($x)>) or declare the subroutine 76to be an object method (see L<perlsub/"Subroutine Attributes"> or 77L<attributes>). 78 79=item Ambiguous range in transliteration operator 80 81(F) You wrote something like C<tr/a-z-0//> which doesn't mean anything at 82all. To include a C<-> character in a transliteration, put it either 83first or last. (In the past, C<tr/a-z-0//> was synonymous with 84C<tr/a-y//>, which was probably not what you would have expected.) 85 86=item Ambiguous use of %s resolved as %s 87 88(W ambiguous)(S) You said something that may not be interpreted the way 89you thought. Normally it's pretty easy to disambiguate it by supplying 90a missing quote, operator, parenthesis pair or declaration. 91 92=item '|' and '<' may not both be specified on command line 93 94(F) An error peculiar to VMS. Perl does its own command line 95redirection, and found that STDIN was a pipe, and that you also tried to 96redirect STDIN using '<'. Only one STDIN stream to a customer, please. 97 98=item '|' and '>' may not both be specified on command line 99 100(F) An error peculiar to VMS. Perl does its own command line 101redirection, and thinks you tried to redirect stdout both to a file and 102into a pipe to another command. You need to choose one or the other, 103though nothing's stopping you from piping into a program or Perl script 104which 'splits' output into two streams, such as 105 106 open(OUT,">$ARGV[0]") or die "Can't write to $ARGV[0]: $!"; 107 while (<STDIN>) { 108 print; 109 print OUT; 110 } 111 close OUT; 112 113=item Applying %s to %s will act on scalar(%s) 114 115(W misc) The pattern match (C<//>), substitution (C<s///>), and 116transliteration (C<tr///>) operators work on scalar values. If you apply 117one of them to an array or a hash, it will convert the array or hash to 118a scalar value -- the length of an array, or the population info of a 119hash -- and then work on that scalar value. This is probably not what 120you meant to do. See L<perlfunc/grep> and L<perlfunc/map> for 121alternatives. 122 123=item Args must match #! line 124 125(F) The setuid emulator requires that the arguments Perl was invoked 126with match the arguments specified on the #! line. Since some systems 127impose a one-argument limit on the #! line, try combining switches; 128for example, turn C<-w -U> into C<-wU>. 129 130=item Arg too short for msgsnd 131 132(F) msgsnd() requires a string at least as long as sizeof(long). 133 134=item %s argument is not a HASH or ARRAY element 135 136(F) The argument to exists() must be a hash or array element, such as: 137 138 $foo{$bar} 139 $ref->{"susie"}[12] 140 141=item %s argument is not a HASH or ARRAY element or slice 142 143(F) The argument to delete() must be either a hash or array element, 144such as: 145 146 $foo{$bar} 147 $ref->{"susie"}[12] 148 149or a hash or array slice, such as: 150 151 @foo[$bar, $baz, $xyzzy] 152 @{$ref->[12]}{"susie", "queue"} 153 154=item %s argument is not a subroutine name 155 156(F) The argument to exists() for C<exists &sub> must be a subroutine 157name, and not a subroutine call. C<exists &sub()> will generate this 158error. 159 160=item Argument "%s" isn't numeric%s 161 162(W numeric) The indicated string was fed as an argument to an operator 163that expected a numeric value instead. If you're fortunate the message 164will identify which operator was so unfortunate. 165 166=item Argument list not closed for PerlIO layer "%s" 167 168(W layer) When pushing a layer with arguments onto the Perl I/O system you 169forgot the ) that closes the argument list. (Layers take care of transforming 170data between external and internal representations.) Perl stopped parsing 171the layer list at this point and did not attempt to push this layer. 172If your program didn't explicitly request the failing operation, it may be 173the result of the value of the environment variable PERLIO. 174 175=item Array @%s missing the @ in argument %d of %s() 176 177(D deprecated) Really old Perl let you omit the @ on array names in some 178spots. This is now heavily deprecated. 179 180=item assertion botched: %s 181 182(P) The malloc package that comes with Perl had an internal failure. 183 184=item Assertion failed: file "%s" 185 186(P) A general assertion failed. The file in question must be examined. 187 188=item Assignment to both a list and a scalar 189 190(F) If you assign to a conditional operator, the 2nd and 3rd arguments 191must either both be scalars or both be lists. Otherwise Perl won't 192know which context to supply to the right side. 193 194=item A thread exited while %d threads were running 195 196(W threads)(S) When using threaded Perl, a thread (not necessarily the main 197thread) exited while there were still other threads running. 198Usually it's a good idea to first collect the return values of the 199created threads by joining them, and only then exit from the main 200thread. See L<threads>. 201 202=item Attempt to access disallowed key '%s' in a restricted hash 203 204(F) The failing code has attempted to get or set a key which is not in 205the current set of allowed keys of a restricted hash. 206 207=item Attempt to bless into a reference 208 209(F) The CLASSNAME argument to the bless() operator is expected to be 210the name of the package to bless the resulting object into. You've 211supplied instead a reference to something: perhaps you wrote 212 213 bless $self, $proto; 214 215when you intended 216 217 bless $self, ref($proto) || $proto; 218 219If you actually want to bless into the stringified version 220of the reference supplied, you need to stringify it yourself, for 221example by: 222 223 bless $self, "$proto"; 224 225=item Attempt to delete disallowed key '%s' from a restricted hash 226 227(F) The failing code attempted to delete from a restricted hash a key 228which is not in its key set. 229 230=item Attempt to delete readonly key '%s' from a restricted hash 231 232(F) The failing code attempted to delete a key whose value has been 233declared readonly from a restricted hash. 234 235=item Attempt to free non-arena SV: 0x%lx 236 237(P internal) All SV objects are supposed to be allocated from arenas 238that will be garbage collected on exit. An SV was discovered to be 239outside any of those arenas. 240 241=item Attempt to free nonexistent shared string 242 243(P internal) Perl maintains a reference counted internal table of 244strings to optimize the storage and access of hash keys and other 245strings. This indicates someone tried to decrement the reference count 246of a string that can no longer be found in the table. 247 248=item Attempt to free temp prematurely 249 250(W debugging) Mortalized values are supposed to be freed by the 251free_tmps() routine. This indicates that something else is freeing the 252SV before the free_tmps() routine gets a chance, which means that the 253free_tmps() routine will be freeing an unreferenced scalar when it does 254try to free it. 255 256=item Attempt to free unreferenced glob pointers 257 258(P internal) The reference counts got screwed up on symbol aliases. 259 260=item Attempt to free unreferenced scalar 261 262(W internal) Perl went to decrement the reference count of a scalar to 263see if it would go to 0, and discovered that it had already gone to 0 264earlier, and should have been freed, and in fact, probably was freed. 265This could indicate that SvREFCNT_dec() was called too many times, or 266that SvREFCNT_inc() was called too few times, or that the SV was 267mortalized when it shouldn't have been, or that memory has been 268corrupted. 269 270=item Attempt to join self 271 272(F) You tried to join a thread from within itself, which is an 273impossible task. You may be joining the wrong thread, or you may need 274to move the join() to some other thread. 275 276=item Attempt to pack pointer to temporary value 277 278(W pack) You tried to pass a temporary value (like the result of a 279function, or a computed expression) to the "p" pack() template. This 280means the result contains a pointer to a location that could become 281invalid anytime, even before the end of the current statement. Use 282literals or global values as arguments to the "p" pack() template to 283avoid this warning. 284 285=item Attempt to set length of freed array 286 287(W) You tried to set the length of an array which has been freed. You 288can do this by storing a reference to the scalar representing the last index 289of an array and later assigning through that reference. For example 290 291 $r = do {my @a; \$#a}; 292 $$r = 503 293 294=item Attempt to use reference as lvalue in substr 295 296(W substr) You supplied a reference as the first argument to substr() 297used as an lvalue, which is pretty strange. Perhaps you forgot to 298dereference it first. See L<perlfunc/substr>. 299 300=item Bad arg length for %s, is %d, should be %s 301 302(F) You passed a buffer of the wrong size to one of msgctl(), semctl() 303or shmctl(). In C parlance, the correct sizes are, respectively, 304S<sizeof(struct msqid_ds *)>, S<sizeof(struct semid_ds *)>, and 305S<sizeof(struct shmid_ds *)>. 306 307=item Bad evalled substitution pattern 308 309(F) You've used the C</e> switch to evaluate the replacement for a 310substitution, but perl found a syntax error in the code to evaluate, 311most likely an unexpected right brace '}'. 312 313=item Bad filehandle: %s 314 315(F) A symbol was passed to something wanting a filehandle, but the 316symbol has no filehandle associated with it. Perhaps you didn't do an 317open(), or did it in another package. 318 319=item Bad free() ignored 320 321(S malloc) An internal routine called free() on something that had never 322been malloc()ed in the first place. Mandatory, but can be disabled by 323setting environment variable C<PERL_BADFREE> to 0. 324 325This message can be seen quite often with DB_File on systems with "hard" 326dynamic linking, like C<AIX> and C<OS/2>. It is a bug of C<Berkeley DB> 327which is left unnoticed if C<DB> uses I<forgiving> system malloc(). 328 329=item Bad hash 330 331(P) One of the internal hash routines was passed a null HV pointer. 332 333=item Bad index while coercing array into hash 334 335(F) The index looked up in the hash found as the 0'th element of a 336pseudo-hash is not legal. Index values must be at 1 or greater. 337See L<perlref>. 338 339=item Badly placed ()'s 340 341(A) You've accidentally run your script through B<csh> instead 342of Perl. Check the #! line, or manually feed your script into 343Perl yourself. 344 345=item Bad name after %s:: 346 347(F) You started to name a symbol by using a package prefix, and then 348didn't finish the symbol. In particular, you can't interpolate outside 349of quotes, so 350 351 $var = 'myvar'; 352 $sym = mypack::$var; 353 354is not the same as 355 356 $var = 'myvar'; 357 $sym = "mypack::$var"; 358 359=item Bad realloc() ignored 360 361(S malloc) An internal routine called realloc() on something that had 362never been malloc()ed in the first place. Mandatory, but can be disabled 363by setting environment variable C<PERL_BADFREE> to 1. 364 365=item Bad symbol for array 366 367(P) An internal request asked to add an array entry to something that 368wasn't a symbol table entry. 369 370=item Bad symbol for filehandle 371 372(P) An internal request asked to add a filehandle entry to something 373that wasn't a symbol table entry. 374 375=item Bad symbol for hash 376 377(P) An internal request asked to add a hash entry to something that 378wasn't a symbol table entry. 379 380=item Bareword found in conditional 381 382(W bareword) The compiler found a bareword where it expected a 383conditional, which often indicates that an || or && was parsed as part 384of the last argument of the previous construct, for example: 385 386 open FOO || die; 387 388It may also indicate a misspelled constant that has been interpreted as 389a bareword: 390 391 use constant TYPO => 1; 392 if (TYOP) { print "foo" } 393 394The C<strict> pragma is useful in avoiding such errors. 395 396=item Bareword "%s" not allowed while "strict subs" in use 397 398(F) With "strict subs" in use, a bareword is only allowed as a 399subroutine identifier, in curly brackets or to the left of the "=>" 400symbol. Perhaps you need to predeclare a subroutine? 401 402=item Bareword "%s" refers to nonexistent package 403 404(W bareword) You used a qualified bareword of the form C<Foo::>, but the 405compiler saw no other uses of that namespace before that point. Perhaps 406you need to predeclare a package? 407 408=item BEGIN failed--compilation aborted 409 410(F) An untrapped exception was raised while executing a BEGIN 411subroutine. Compilation stops immediately and the interpreter is 412exited. 413 414=item BEGIN not safe after errors--compilation aborted 415 416(F) Perl found a C<BEGIN {}> subroutine (or a C<use> directive, which 417implies a C<BEGIN {}>) after one or more compilation errors had already 418occurred. Since the intended environment for the C<BEGIN {}> could not 419be guaranteed (due to the errors), and since subsequent code likely 420depends on its correct operation, Perl just gave up. 421 422=item \1 better written as $1 423 424(W syntax) Outside of patterns, backreferences live on as variables. 425The use of backslashes is grandfathered on the right-hand side of a 426substitution, but stylistically it's better to use the variable form 427because other Perl programmers will expect it, and it works better if 428there are more than 9 backreferences. 429 430=item Binary number > 0b11111111111111111111111111111111 non-portable 431 432(W portable) The binary number you specified is larger than 2**32-1 433(4294967295) and therefore non-portable between systems. See 434L<perlport> for more on portability concerns. 435 436=item bind() on closed socket %s 437 438(W closed) You tried to do a bind on a closed socket. Did you forget to 439check the return value of your socket() call? See L<perlfunc/bind>. 440 441=item binmode() on closed filehandle %s 442 443(W unopened) You tried binmode() on a filehandle that was never opened. 444Check you control flow and number of arguments. 445 446=item Bit vector size > 32 non-portable 447 448(W portable) Using bit vector sizes larger than 32 is non-portable. 449 450=item Bizarre copy of %s in %s 451 452(P) Perl detected an attempt to copy an internal value that is not 453copyable. 454 455=item Buffer overflow in prime_env_iter: %s 456 457(W internal) A warning peculiar to VMS. While Perl was preparing to 458iterate over %ENV, it encountered a logical name or symbol definition 459which was too long, so it was truncated to the string shown. 460 461=item Callback called exit 462 463(F) A subroutine invoked from an external package via call_sv() 464exited by calling exit. 465 466=item %s() called too early to check prototype 467 468(W prototype) You've called a function that has a prototype before the 469parser saw a definition or declaration for it, and Perl could not check 470that the call conforms to the prototype. You need to either add an 471early prototype declaration for the subroutine in question, or move the 472subroutine definition ahead of the call to get proper prototype 473checking. Alternatively, if you are certain that you're calling the 474function correctly, you may put an ampersand before the name to avoid 475the warning. See L<perlsub>. 476 477=item Cannot compress integer in pack 478 479(F) An argument to pack("w",...) was too large to compress. The BER 480compressed integer format can only be used with positive integers, and you 481attempted to compress Infinity or a very large number (> 1e308). 482See L<perlfunc/pack>. 483 484=item Cannot compress negative numbers in pack 485 486(F) An argument to pack("w",...) was negative. The BER compressed integer 487format can only be used with positive integers. See L<perlfunc/pack>. 488 489=item Can only compress unsigned integers in pack 490 491(F) An argument to pack("w",...) was not an integer. The BER compressed 492integer format can only be used with positive integers, and you attempted 493to compress something else. See L<perlfunc/pack>. 494 495=item Can't bless non-reference value 496 497(F) Only hard references may be blessed. This is how Perl "enforces" 498encapsulation of objects. See L<perlobj>. 499 500=item Can't call method "%s" in empty package "%s" 501 502(F) You called a method correctly, and it correctly indicated a package 503functioning as a class, but that package doesn't have ANYTHING defined 504in it, let alone methods. See L<perlobj>. 505 506=item Can't call method "%s" on an undefined value 507 508(F) You used the syntax of a method call, but the slot filled by the 509object reference or package name contains an undefined value. Something 510like this will reproduce the error: 511 512 $BADREF = undef; 513 process $BADREF 1,2,3; 514 $BADREF->process(1,2,3); 515 516=item Can't call method "%s" on unblessed reference 517 518(F) A method call must know in what package it's supposed to run. It 519ordinarily finds this out from the object reference you supply, but you 520didn't supply an object reference in this case. A reference isn't an 521object reference until it has been blessed. See L<perlobj>. 522 523=item Can't call method "%s" without a package or object reference 524 525(F) You used the syntax of a method call, but the slot filled by the 526object reference or package name contains an expression that returns a 527defined value which is neither an object reference nor a package name. 528Something like this will reproduce the error: 529 530 $BADREF = 42; 531 process $BADREF 1,2,3; 532 $BADREF->process(1,2,3); 533 534=item Can't chdir to %s 535 536(F) You called C<perl -x/foo/bar>, but C</foo/bar> is not a directory 537that you can chdir to, possibly because it doesn't exist. 538 539=item Can't check filesystem of script "%s" for nosuid 540 541(P) For some reason you can't check the filesystem of the script for 542nosuid. 543 544=item Can't coerce array into hash 545 546(F) You used an array where a hash was expected, but the array has no 547information on how to map from keys to array indices. You can do that 548only with arrays that have a hash reference at index 0. 549 550=item Can't coerce %s to integer in %s 551 552(F) Certain types of SVs, in particular real symbol table entries 553(typeglobs), can't be forced to stop being what they are. So you can't 554say things like: 555 556 *foo += 1; 557 558You CAN say 559 560 $foo = *foo; 561 $foo += 1; 562 563but then $foo no longer contains a glob. 564 565=item Can't coerce %s to number in %s 566 567(F) Certain types of SVs, in particular real symbol table entries 568(typeglobs), can't be forced to stop being what they are. 569 570=item Can't coerce %s to string in %s 571 572(F) Certain types of SVs, in particular real symbol table entries 573(typeglobs), can't be forced to stop being what they are. 574 575=item Can't create pipe mailbox 576 577(P) An error peculiar to VMS. The process is suffering from exhausted 578quotas or other plumbing problems. 579 580=item Can't declare class for non-scalar %s in "%s" 581 582(F) Currently, only scalar variables can be declared with a specific 583class qualifier in a "my" or "our" declaration. The semantics may be 584extended for other types of variables in future. 585 586=item Can't declare %s in "%s" 587 588(F) Only scalar, array, and hash variables may be declared as "my" or 589"our" variables. They must have ordinary identifiers as names. 590 591=item Can't do inplace edit: %s is not a regular file 592 593(S inplace) You tried to use the B<-i> switch on a special file, such as 594a file in /dev, or a FIFO. The file was ignored. 595 596=item Can't do inplace edit on %s: %s 597 598(S inplace) The creation of the new file failed for the indicated 599reason. 600 601=item Can't do inplace edit without backup 602 603(F) You're on a system such as MS-DOS that gets confused if you try 604reading from a deleted (but still opened) file. You have to say 605C<-i.bak>, or some such. 606 607=item Can't do inplace edit: %s would not be unique 608 609(S inplace) Your filesystem does not support filenames longer than 14 610characters and Perl was unable to create a unique filename during 611inplace editing with the B<-i> switch. The file was ignored. 612 613=item Can't do {n,m} with n > m in regex; marked by <-- HERE in m/%s/ 614 615(F) Minima must be less than or equal to maxima. If you really want your 616regexp to match something 0 times, just put {0}. The <-- HERE shows in the 617regular expression about where the problem was discovered. See L<perlre>. 618 619=item Can't do setegid! 620 621(P) The setegid() call failed for some reason in the setuid emulator of 622suidperl. 623 624=item Can't do seteuid! 625 626(P) The setuid emulator of suidperl failed for some reason. 627 628=item Can't do setuid 629 630(F) This typically means that ordinary perl tried to exec suidperl to do 631setuid emulation, but couldn't exec it. It looks for a name of the form 632sperl5.000 in the same directory that the perl executable resides under 633the name perl5.000, typically /usr/local/bin on Unix machines. If the 634file is there, check the execute permissions. If it isn't, ask your 635sysadmin why he and/or she removed it. 636 637=item Can't do waitpid with flags 638 639(F) This machine doesn't have either waitpid() or wait4(), so only 640waitpid() without flags is emulated. 641 642=item Can't emulate -%s on #! line 643 644(F) The #! line specifies a switch that doesn't make sense at this 645point. For example, it'd be kind of silly to put a B<-x> on the #! 646line. 647 648=item Can't exec "%s": %s 649 650(W exec) A system(), exec(), or piped open call could not execute the 651named program for the indicated reason. Typical reasons include: the 652permissions were wrong on the file, the file wasn't found in 653C<$ENV{PATH}>, the executable in question was compiled for another 654architecture, or the #! line in a script points to an interpreter that 655can't be run for similar reasons. (Or maybe your system doesn't support 656#! at all.) 657 658=item Can't exec %s 659 660(F) Perl was trying to execute the indicated program for you because 661that's what the #! line said. If that's not what you wanted, you may 662need to mention "perl" on the #! line somewhere. 663 664=item Can't execute %s 665 666(F) You used the B<-S> switch, but the copies of the script to execute 667found in the PATH did not have correct permissions. 668 669=item Can't find an opnumber for "%s" 670 671(F) A string of a form C<CORE::word> was given to prototype(), but there 672is no builtin with the name C<word>. 673 674=item Can't find %s character property "%s" 675 676(F) You used C<\p{}> or C<\P{}> but the character property by that name 677could not be found. Maybe you misspelled the name of the property 678(remember that the names of character properties consist only of 679alphanumeric characters), or maybe you forgot the C<Is> or C<In> prefix? 680 681=item Can't find label %s 682 683(F) You said to goto a label that isn't mentioned anywhere that it's 684possible for us to go to. See L<perlfunc/goto>. 685 686=item Can't find %s on PATH 687 688(F) You used the B<-S> switch, but the script to execute could not be 689found in the PATH. 690 691=item Can't find %s on PATH, '.' not in PATH 692 693(F) You used the B<-S> switch, but the script to execute could not be 694found in the PATH, or at least not with the correct permissions. The 695script exists in the current directory, but PATH prohibits running it. 696 697=item Can't find %s property definition %s 698 699(F) You may have tried to use C<\p> which means a Unicode property (for 700example C<\p{Lu}> is all uppercase letters). If you did mean to use a 701Unicode property, see L<perlunicode> for the list of known properties. 702If you didn't mean to use a Unicode property, escape the C<\p>, either 703by C<\\p> (just the C<\p>) or by C<\Q\p> (the rest of the string, until 704possible C<\E>). 705 706=item Can't find string terminator %s anywhere before EOF 707 708(F) Perl strings can stretch over multiple lines. This message means 709that the closing delimiter was omitted. Because bracketed quotes count 710nesting levels, the following is missing its final parenthesis: 711 712 print q(The character '(' starts a side comment.); 713 714If you're getting this error from a here-document, you may have included 715unseen whitespace before or after your closing tag. A good programmer's 716editor will have a way to help you find these characters. 717 718=item Can't fork 719 720(F) A fatal error occurred while trying to fork while opening a 721pipeline. 722 723=item Can't get filespec - stale stat buffer? 724 725(S) A warning peculiar to VMS. This arises because of the difference 726between access checks under VMS and under the Unix model Perl assumes. 727Under VMS, access checks are done by filename, rather than by bits in 728the stat buffer, so that ACLs and other protections can be taken into 729account. Unfortunately, Perl assumes that the stat buffer contains all 730the necessary information, and passes it, instead of the filespec, to 731the access checking routine. It will try to retrieve the filespec using 732the device name and FID present in the stat buffer, but this works only 733if you haven't made a subsequent call to the CRTL stat() routine, 734because the device name is overwritten with each call. If this warning 735appears, the name lookup failed, and the access checking routine gave up 736and returned FALSE, just to be conservative. (Note: The access checking 737routine knows about the Perl C<stat> operator and file tests, so you 738shouldn't ever see this warning in response to a Perl command; it arises 739only if some internal code takes stat buffers lightly.) 740 741=item Can't get pipe mailbox device name 742 743(P) An error peculiar to VMS. After creating a mailbox to act as a 744pipe, Perl can't retrieve its name for later use. 745 746=item Can't get SYSGEN parameter value for MAXBUF 747 748(P) An error peculiar to VMS. Perl asked $GETSYI how big you want your 749mailbox buffers to be, and didn't get an answer. 750 751=item Can't "goto" into the middle of a foreach loop 752 753(F) A "goto" statement was executed to jump into the middle of a foreach 754loop. You can't get there from here. See L<perlfunc/goto>. 755 756=item Can't "goto" out of a pseudo block 757 758(F) A "goto" statement was executed to jump out of what might look like 759a block, except that it isn't a proper block. This usually occurs if 760you tried to jump out of a sort() block or subroutine, which is a no-no. 761See L<perlfunc/goto>. 762 763=item Can't goto subroutine from an eval-%s 764 765(F) The "goto subroutine" call can't be used to jump out of an eval 766"string" or block. 767 768=item Can't goto subroutine outside a subroutine 769 770(F) The deeply magical "goto subroutine" call can only replace one 771subroutine call for another. It can't manufacture one out of whole 772cloth. In general you should be calling it out of only an AUTOLOAD 773routine anyway. See L<perlfunc/goto>. 774 775=item Can't ignore signal CHLD, forcing to default 776 777(W signal) Perl has detected that it is being run with the SIGCHLD 778signal (sometimes known as SIGCLD) disabled. Since disabling this 779signal will interfere with proper determination of exit status of child 780processes, Perl has reset the signal to its default value. This 781situation typically indicates that the parent program under which Perl 782may be running (e.g. cron) is being very careless. 783 784=item Can't "last" outside a loop block 785 786(F) A "last" statement was executed to break out of the current block, 787except that there's this itty bitty problem called there isn't a current 788block. Note that an "if" or "else" block doesn't count as a "loopish" 789block, as doesn't a block given to sort(), map() or grep(). You can 790usually double the curlies to get the same effect though, because the 791inner curlies will be considered a block that loops once. See 792L<perlfunc/last>. 793 794=item Can't load '%s' for module %s 795 796(F) The module you tried to load failed to load a dynamic extension. This 797may either mean that you upgraded your version of perl to one that is 798incompatible with your old dynamic extensions (which is known to happen 799between major versions of perl), or (more likely) that your dynamic 800extension was built against an older version of the library that is 801installed on your system. You may need to rebuild your old dynamic 802extensions. 803 804=item Can't localize lexical variable %s 805 806(F) You used local on a variable name that was previously declared as a 807lexical variable using "my". This is not allowed. If you want to 808localize a package variable of the same name, qualify it with the 809package name. 810 811=item Can't localize pseudo-hash element 812 813(F) You said something like C<< local $ar->{'key'} >>, where $ar is a 814reference to a pseudo-hash. That hasn't been implemented yet, but you 815can get a similar effect by localizing the corresponding array element 816directly -- C<< local $ar->[$ar->[0]{'key'}] >>. 817 818=item Can't localize through a reference 819 820(F) You said something like C<local $$ref>, which Perl can't currently 821handle, because when it goes to restore the old value of whatever $ref 822pointed to after the scope of the local() is finished, it can't be sure 823that $ref will still be a reference. 824 825=item Can't locate %s 826 827(F) You said to C<do> (or C<require>, or C<use>) a file that couldn't be 828found. Perl looks for the file in all the locations mentioned in @INC, 829unless the file name included the full path to the file. Perhaps you 830need to set the PERL5LIB or PERL5OPT environment variable to say where 831the extra library is, or maybe the script needs to add the library name 832to @INC. Or maybe you just misspelled the name of the file. See 833L<perlfunc/require> and L<lib>. 834 835=item Can't locate auto/%s.al in @INC 836 837(F) A function (or method) was called in a package which allows 838autoload, but there is no function to autoload. Most probable causes 839are a misprint in a function/method name or a failure to C<AutoSplit> 840the file, say, by doing C<make install>. 841 842=item Can't locate loadable object for module %s in @INC 843 844(F) The module you loaded is trying to load an external library, like 845for example, C<foo.so> or C<bar.dll>, but the L<DynaLoader> module was 846unable to locate this library. See L<DynaLoader>. 847 848=item Can't locate object method "%s" via package "%s" 849 850(F) You called a method correctly, and it correctly indicated a package 851functioning as a class, but that package doesn't define that particular 852method, nor does any of its base classes. See L<perlobj>. 853 854=item Can't locate package %s for @%s::ISA 855 856(W syntax) The @ISA array contained the name of another package that 857doesn't seem to exist. 858 859=item Can't locate PerlIO%s 860 861(F) You tried to use in open() a PerlIO layer that does not exist, 862e.g. open(FH, ">:nosuchlayer", "somefile"). 863 864=item Can't make list assignment to \%ENV on this system 865 866(F) List assignment to %ENV is not supported on some systems, notably 867VMS. 868 869=item Can't modify %s in %s 870 871(F) You aren't allowed to assign to the item indicated, or otherwise try 872to change it, such as with an auto-increment. 873 874=item Can't modify nonexistent substring 875 876(P) The internal routine that does assignment to a substr() was handed 877a NULL. 878 879=item Can't modify non-lvalue subroutine call 880 881(F) Subroutines meant to be used in lvalue context should be declared as 882such, see L<perlsub/"Lvalue subroutines">. 883 884=item Can't msgrcv to read-only var 885 886(F) The target of a msgrcv must be modifiable to be used as a receive 887buffer. 888 889=item Can't "next" outside a loop block 890 891(F) A "next" statement was executed to reiterate the current block, but 892there isn't a current block. Note that an "if" or "else" block doesn't 893count as a "loopish" block, as doesn't a block given to sort(), map() or 894grep(). You can usually double the curlies to get the same effect 895though, because the inner curlies will be considered a block that loops 896once. See L<perlfunc/next>. 897 898=item Can't open %s: %s 899 900(S inplace) The implicit opening of a file through use of the C<< <> >> 901filehandle, either implicitly under the C<-n> or C<-p> command-line 902switches, or explicitly, failed for the indicated reason. Usually this 903is because you don't have read permission for a file which you named on 904the command line. 905 906=item Can't open a reference 907 908(W io) You tried to open a scalar reference for reading or writing, 909using the 3-arg open() syntax : 910 911 open FH, '>', $ref; 912 913but your version of perl is compiled without perlio, and this form of 914open is not supported. 915 916=item Can't open bidirectional pipe 917 918(W pipe) You tried to say C<open(CMD, "|cmd|")>, which is not supported. 919You can try any of several modules in the Perl library to do this, such 920as IPC::Open2. Alternately, direct the pipe's output to a file using 921">", and then read it in under a different file handle. 922 923=item Can't open error file %s as stderr 924 925(F) An error peculiar to VMS. Perl does its own command line 926redirection, and couldn't open the file specified after '2>' or '2>>' on 927the command line for writing. 928 929=item Can't open input file %s as stdin 930 931(F) An error peculiar to VMS. Perl does its own command line 932redirection, and couldn't open the file specified after '<' on the 933command line for reading. 934 935=item Can't open output file %s as stdout 936 937(F) An error peculiar to VMS. Perl does its own command line 938redirection, and couldn't open the file specified after '>' or '>>' on 939the command line for writing. 940 941=item Can't open output pipe (name: %s) 942 943(P) An error peculiar to VMS. Perl does its own command line 944redirection, and couldn't open the pipe into which to send data destined 945for stdout. 946 947=item Can't open perl script%s 948 949(F) The script you specified can't be opened for the indicated reason. 950 951If you're debugging a script that uses #!, and normally relies on the 952shell's $PATH search, the -S option causes perl to do that search, so 953you don't have to type the path or C<`which $scriptname`>. 954 955=item Can't read CRTL environ 956 957(S) A warning peculiar to VMS. Perl tried to read an element of %ENV 958from the CRTL's internal environment array and discovered the array was 959missing. You need to figure out where your CRTL misplaced its environ 960or define F<PERL_ENV_TABLES> (see L<perlvms>) so that environ is not 961searched. 962 963=item Can't redefine active sort subroutine %s 964 965(F) Perl optimizes the internal handling of sort subroutines and keeps 966pointers into them. You tried to redefine one such sort subroutine when 967it was currently active, which is not allowed. If you really want to do 968this, you should write C<sort { &func } @x> instead of C<sort func @x>. 969 970=item Can't "redo" outside a loop block 971 972(F) A "redo" statement was executed to restart the current block, but 973there isn't a current block. Note that an "if" or "else" block doesn't 974count as a "loopish" block, as doesn't a block given to sort(), map() 975or grep(). You can usually double the curlies to get the same effect 976though, because the inner curlies will be considered a block that 977loops once. See L<perlfunc/redo>. 978 979=item Can't remove %s: %s, skipping file 980 981(S inplace) You requested an inplace edit without creating a backup 982file. Perl was unable to remove the original file to replace it with 983the modified file. The file was left unmodified. 984 985=item Can't rename %s to %s: %s, skipping file 986 987(S inplace) The rename done by the B<-i> switch failed for some reason, 988probably because you don't have write permission to the directory. 989 990=item Can't reopen input pipe (name: %s) in binary mode 991 992(P) An error peculiar to VMS. Perl thought stdin was a pipe, and tried 993to reopen it to accept binary data. Alas, it failed. 994 995=item Can't resolve method `%s' overloading `%s' in package `%s' 996 997(F|P) Error resolving overloading specified by a method name (as opposed 998to a subroutine reference): no such method callable via the package. If 999method name is C<???>, this is an internal error. 1000 1001=item Can't reswap uid and euid 1002 1003(P) The setreuid() call failed for some reason in the setuid emulator of 1004suidperl. 1005 1006=item Can't return %s from lvalue subroutine 1007 1008(F) Perl detected an attempt to return illegal lvalues (such as 1009temporary or readonly values) from a subroutine used as an lvalue. This 1010is not allowed. 1011 1012=item Can't return outside a subroutine 1013 1014(F) The return statement was executed in mainline code, that is, where 1015there was no subroutine call to return out of. See L<perlsub>. 1016 1017=item Can't return %s to lvalue scalar context 1018 1019(F) You tried to return a complete array or hash from an lvalue subroutine, 1020but you called the subroutine in a way that made Perl think you meant 1021to return only one value. You probably meant to write parentheses around 1022the call to the subroutine, which tell Perl that the call should be in 1023list context. 1024 1025=item Can't stat script "%s" 1026 1027(P) For some reason you can't fstat() the script even though you have it 1028open already. Bizarre. 1029 1030=item Can't swap uid and euid 1031 1032(P) The setreuid() call failed for some reason in the setuid emulator of 1033suidperl. 1034 1035=item Can't take log of %g 1036 1037(F) For ordinary real numbers, you can't take the logarithm of a 1038negative number or zero. There's a Math::Complex package that comes 1039standard with Perl, though, if you really want to do that for the 1040negative numbers. 1041 1042=item Can't take sqrt of %g 1043 1044(F) For ordinary real numbers, you can't take the square root of a 1045negative number. There's a Math::Complex package that comes standard 1046with Perl, though, if you really want to do that. 1047 1048=item Can't undef active subroutine 1049 1050(F) You can't undefine a routine that's currently running. You can, 1051however, redefine it while it's running, and you can even undef the 1052redefined subroutine while the old routine is running. Go figure. 1053 1054=item Can't unshift 1055 1056(F) You tried to unshift an "unreal" array that can't be unshifted, such 1057as the main Perl stack. 1058 1059=item Can't upgrade that kind of scalar 1060 1061(P) The internal sv_upgrade routine adds "members" to an SV, making it 1062into a more specialized kind of SV. The top several SV types are so 1063specialized, however, that they cannot be interconverted. This message 1064indicates that such a conversion was attempted. 1065 1066=item Can't upgrade to undef 1067 1068(P) The undefined SV is the bottom of the totem pole, in the scheme of 1069upgradability. Upgrading to undef indicates an error in the code 1070calling sv_upgrade. 1071 1072=item Can't use anonymous symbol table for method lookup 1073 1074(F) The internal routine that does method lookup was handed a symbol 1075table that doesn't have a name. Symbol tables can become anonymous 1076for example by undefining stashes: C<undef %Some::Package::>. 1077 1078=item Can't use an undefined value as %s reference 1079 1080(F) A value used as either a hard reference or a symbolic reference must 1081be a defined value. This helps to delurk some insidious errors. 1082 1083=item Can't use bareword ("%s") as %s ref while "strict refs" in use 1084 1085(F) Only hard references are allowed by "strict refs". Symbolic 1086references are disallowed. See L<perlref>. 1087 1088=item Can't use %! because Errno.pm is not available 1089 1090(F) The first time the %! hash is used, perl automatically loads the 1091Errno.pm module. The Errno module is expected to tie the %! hash to 1092provide symbolic names for C<$!> errno values. 1093 1094=item Can't use %s for loop variable 1095 1096(F) Only a simple scalar variable may be used as a loop variable on a 1097foreach. 1098 1099=item Can't use global %s in "my" 1100 1101(F) You tried to declare a magical variable as a lexical variable. This 1102is not allowed, because the magic can be tied to only one location 1103(namely the global variable) and it would be incredibly confusing to 1104have variables in your program that looked like magical variables but 1105weren't. 1106 1107=item Can't use "my %s" in sort comparison 1108 1109(F) The global variables $a and $b are reserved for sort comparisons. 1110You mentioned $a or $b in the same line as the <=> or cmp operator, 1111and the variable had earlier been declared as a lexical variable. 1112Either qualify the sort variable with the package name, or rename the 1113lexical variable. 1114 1115=item Can't use %s ref as %s ref 1116 1117(F) You've mixed up your reference types. You have to dereference a 1118reference of the type needed. You can use the ref() function to 1119test the type of the reference, if need be. 1120 1121=item Can't use string ("%s") as %s ref while "strict refs" in use 1122 1123(F) Only hard references are allowed by "strict refs". Symbolic 1124references are disallowed. See L<perlref>. 1125 1126=item Can't use subscript on %s 1127 1128(F) The compiler tried to interpret a bracketed expression as a 1129subscript. But to the left of the brackets was an expression that 1130didn't look like a hash or array reference, or anything else subscriptable. 1131 1132=item Can't use \%c to mean $%c in expression 1133 1134(W syntax) In an ordinary expression, backslash is a unary operator that 1135creates a reference to its argument. The use of backslash to indicate a 1136backreference to a matched substring is valid only as part of a regular 1137expression pattern. Trying to do this in ordinary Perl code produces a 1138value that prints out looking like SCALAR(0xdecaf). Use the $1 form 1139instead. 1140 1141=item Can't weaken a nonreference 1142 1143(F) You attempted to weaken something that was not a reference. Only 1144references can be weakened. 1145 1146=item Can't x= to read-only value 1147 1148(F) You tried to repeat a constant value (often the undefined value) 1149with an assignment operator, which implies modifying the value itself. 1150Perhaps you need to copy the value to a temporary, and repeat that. 1151 1152=item Character in "C" format wrapped in pack 1153 1154(W pack) You said 1155 1156 pack("C", $x) 1157 1158where $x is either less than 0 or more than 255; the C<"C"> format is 1159only for encoding native operating system characters (ASCII, EBCDIC, 1160and so on) and not for Unicode characters, so Perl behaved as if you meant 1161 1162 pack("C", $x & 255) 1163 1164If you actually want to pack Unicode codepoints, use the C<"U"> format 1165instead. 1166 1167=item Character in "c" format wrapped in pack 1168 1169(W pack) You said 1170 1171 pack("c", $x) 1172 1173where $x is either less than -128 or more than 127; the C<"c"> format 1174is only for encoding native operating system characters (ASCII, EBCDIC, 1175and so on) and not for Unicode characters, so Perl behaved as if you meant 1176 1177 pack("c", $x & 255); 1178 1179If you actually want to pack Unicode codepoints, use the C<"U"> format 1180instead. 1181 1182=item close() on unopened filehandle %s 1183 1184(W unopened) You tried to close a filehandle that was never opened. 1185 1186=item Code missing after '/' 1187 1188(F) You had a (sub-)template that ends with a '/'. There must be another 1189template code following the slash. See L<perlfunc/pack>. 1190 1191=item %s: Command not found 1192 1193(A) You've accidentally run your script through B<csh> instead of Perl. 1194Check the #! line, or manually feed your script into Perl yourself. 1195 1196=item Compilation failed in require 1197 1198(F) Perl could not compile a file specified in a C<require> statement. 1199Perl uses this generic message when none of the errors that it 1200encountered were severe enough to halt compilation immediately. 1201 1202=item Complex regular subexpression recursion limit (%d) exceeded 1203 1204(W regexp) The regular expression engine uses recursion in complex 1205situations where back-tracking is required. Recursion depth is limited 1206to 32766, or perhaps less in architectures where the stack cannot grow 1207arbitrarily. ("Simple" and "medium" situations are handled without 1208recursion and are not subject to a limit.) Try shortening the string 1209under examination; looping in Perl code (e.g. with C<while>) rather than 1210in the regular expression engine; or rewriting the regular expression so 1211that it is simpler or backtracks less. (See L<perlfaq2> for information 1212on I<Mastering Regular Expressions>.) 1213 1214=item cond_broadcast() called on unlocked variable 1215 1216(W threads) Within a thread-enabled program, you tried to call 1217cond_broadcast() on a variable which wasn't locked. The cond_broadcast() 1218function is used to wake up another thread that is waiting in a 1219cond_wait(). To ensure that the signal isn't sent before the other thread 1220has a chance to enter the wait, it is usual for the signaling thread to 1221first wait for a lock on variable. This lock attempt will only succeed 1222after the other thread has entered cond_wait() and thus relinquished the 1223lock. 1224 1225=item cond_signal() called on unlocked variable 1226 1227(W threads) Within a thread-enabled program, you tried to call 1228cond_signal() on a variable which wasn't locked. The cond_signal() 1229function is used to wake up another thread that is waiting in a 1230cond_wait(). To ensure that the signal isn't sent before the other thread 1231has a chance to enter the wait, it is usual for the signaling thread to 1232first wait for a lock on variable. This lock attempt will only succeed 1233after the other thread has entered cond_wait() and thus relinquished the 1234lock. 1235 1236=item connect() on closed socket %s 1237 1238(W closed) You tried to do a connect on a closed socket. Did you forget 1239to check the return value of your socket() call? See 1240L<perlfunc/connect>. 1241 1242=item Constant(%s)%s: %s 1243 1244(F) The parser found inconsistencies either while attempting to define 1245an overloaded constant, or when trying to find the character name 1246specified in the C<\N{...}> escape. Perhaps you forgot to load the 1247corresponding C<overload> or C<charnames> pragma? See L<charnames> and 1248L<overload>. 1249 1250=item Constant is not %s reference 1251 1252(F) A constant value (perhaps declared using the C<use constant> pragma) 1253is being dereferenced, but it amounts to the wrong type of reference. 1254The message indicates the type of reference that was expected. This 1255usually indicates a syntax error in dereferencing the constant value. 1256See L<perlsub/"Constant Functions"> and L<constant>. 1257 1258=item Constant subroutine %s redefined 1259 1260(S) You redefined a subroutine which had previously been 1261eligible for inlining. See L<perlsub/"Constant Functions"> for 1262commentary and workarounds. 1263 1264=item Constant subroutine %s undefined 1265 1266(W misc) You undefined a subroutine which had previously been eligible 1267for inlining. See L<perlsub/"Constant Functions"> for commentary and 1268workarounds. 1269 1270=item Copy method did not return a reference 1271 1272(F) The method which overloads "=" is buggy. See 1273L<overload/Copy Constructor>. 1274 1275=item CORE::%s is not a keyword 1276 1277(F) The CORE:: namespace is reserved for Perl keywords. 1278 1279=item corrupted regexp pointers 1280 1281(P) The regular expression engine got confused by what the regular 1282expression compiler gave it. 1283 1284=item corrupted regexp program 1285 1286(P) The regular expression engine got passed a regexp program without a 1287valid magic number. 1288 1289=item Corrupt malloc ptr 0x%lx at 0x%lx 1290 1291(P) The malloc package that comes with Perl had an internal failure. 1292 1293=item Count after length/code in unpack 1294 1295(F) You had an unpack template indicating a counted-length string, but 1296you have also specified an explicit size for the string. See 1297L<perlfunc/pack>. 1298 1299=item Deep recursion on subroutine "%s" 1300 1301(W recursion) This subroutine has called itself (directly or indirectly) 1302100 times more than it has returned. This probably indicates an 1303infinite recursion, unless you're writing strange benchmark programs, in 1304which case it indicates something else. 1305 1306=item defined(@array) is deprecated 1307 1308(D deprecated) defined() is not usually useful on arrays because it 1309checks for an undefined I<scalar> value. If you want to see if the 1310array is empty, just use C<if (@array) { # not empty }> for example. 1311 1312=item defined(%hash) is deprecated 1313 1314(D deprecated) defined() is not usually useful on hashes because it 1315checks for an undefined I<scalar> value. If you want to see if the hash 1316is empty, just use C<if (%hash) { # not empty }> for example. 1317 1318=item %s defines neither package nor VERSION--version check failed 1319 1320(F) You said something like "use Module 42" but in the Module file 1321there are neither package declarations nor a C<$VERSION>. 1322 1323=item Delimiter for here document is too long 1324 1325(F) In a here document construct like C<<<FOO>, the label C<FOO> is too 1326long for Perl to handle. You have to be seriously twisted to write code 1327that triggers this error. 1328 1329=item DESTROY created new reference to dead object '%s' 1330 1331(F) A DESTROY() method created a new reference to the object which is 1332just being DESTROYed. Perl is confused, and prefers to abort rather than 1333to create a dangling reference. 1334 1335=item Did not produce a valid header 1336 1337See Server error. 1338 1339=item %s did not return a true value 1340 1341(F) A required (or used) file must return a true value to indicate that 1342it compiled correctly and ran its initialization code correctly. It's 1343traditional to end such a file with a "1;", though any true value would 1344do. See L<perlfunc/require>. 1345 1346=item (Did you mean &%s instead?) 1347 1348(W) You probably referred to an imported subroutine &FOO as $FOO or some 1349such. 1350 1351=item (Did you mean "local" instead of "our"?) 1352 1353(W misc) Remember that "our" does not localize the declared global 1354variable. You have declared it again in the same lexical scope, which 1355seems superfluous. 1356 1357=item (Did you mean $ or @ instead of %?) 1358 1359(W) You probably said %hash{$key} when you meant $hash{$key} or 1360@hash{@keys}. On the other hand, maybe you just meant %hash and got 1361carried away. 1362 1363=item Died 1364 1365(F) You passed die() an empty string (the equivalent of C<die "">) or 1366you called it with no args and both C<$@> and C<$_> were empty. 1367 1368=item Document contains no data 1369 1370See Server error. 1371 1372=item %s does not define %s::VERSION--version check failed 1373 1374(F) You said something like "use Module 42" but the Module did not 1375define a C<$VERSION.> 1376 1377=item '/' does not take a repeat count 1378 1379(F) You cannot put a repeat count of any kind right after the '/' code. 1380See L<perlfunc/pack>. 1381 1382=item Don't know how to handle magic of type '%s' 1383 1384(P) The internal handling of magical variables has been cursed. 1385 1386=item do_study: out of memory 1387 1388(P) This should have been caught by safemalloc() instead. 1389 1390=item (Do you need to predeclare %s?) 1391 1392(S syntax) This is an educated guess made in conjunction with the message 1393"%s found where operator expected". It often means a subroutine or module 1394name is being referenced that hasn't been declared yet. This may be 1395because of ordering problems in your file, or because of a missing 1396"sub", "package", "require", or "use" statement. If you're referencing 1397something that isn't defined yet, you don't actually have to define the 1398subroutine or package before the current location. You can use an empty 1399"sub foo;" or "package FOO;" to enter a "forward" declaration. 1400 1401=item dump() better written as CORE::dump() 1402 1403(W misc) You used the obsolescent C<dump()> built-in function, without fully 1404qualifying it as C<CORE::dump()>. Maybe it's a typo. See L<perlfunc/dump>. 1405 1406=item Duplicate free() ignored 1407 1408(S malloc) An internal routine called free() on something that had 1409already been freed. 1410 1411=item Duplicate modifier '%c' after '%c' in %s 1412 1413(W) You have applied the same modifier more than once after a type 1414in a pack template. See L<perlfunc/pack>. 1415 1416=item elseif should be elsif 1417 1418(S syntax) There is no keyword "elseif" in Perl because Larry thinks it's 1419ugly. Your code will be interpreted as an attempt to call a method named 1420"elseif" for the class returned by the following block. This is 1421unlikely to be what you want. 1422 1423=item Empty %s 1424 1425(F) C<\p> and C<\P> are used to introduce a named Unicode property, as 1426described in L<perlunicode> and L<perlre>. You used C<\p> or C<\P> in 1427a regular expression without specifying the property name. 1428 1429=item entering effective %s failed 1430 1431(F) While under the C<use filetest> pragma, switching the real and 1432effective uids or gids failed. 1433 1434=item %ENV is aliased to %s 1435 1436(F) You're running under taint mode, and the C<%ENV> variable has been 1437aliased to another hash, so it doesn't reflect anymore the state of the 1438program's environment. This is potentially insecure. 1439 1440=item Error converting file specification %s 1441 1442(F) An error peculiar to VMS. Because Perl may have to deal with file 1443specifications in either VMS or Unix syntax, it converts them to a 1444single form when it must operate on them directly. Either you've passed 1445an invalid file specification to Perl, or you've found a case the 1446conversion routines don't handle. Drat. 1447 1448=item %s: Eval-group in insecure regular expression 1449 1450(F) Perl detected tainted data when trying to compile a regular 1451expression that contains the C<(?{ ... })> zero-width assertion, which 1452is unsafe. See L<perlre/(?{ code })>, and L<perlsec>. 1453 1454=item %s: Eval-group not allowed at run time 1455 1456(F) Perl tried to compile a regular expression containing the 1457C<(?{ ... })> zero-width assertion at run time, as it would when the 1458pattern contains interpolated values. Since that is a security risk, it 1459is not allowed. If you insist, you may still do this by explicitly 1460building the pattern from an interpolated string at run time and using 1461that in an eval(). See L<perlre/(?{ code })>. 1462 1463=item %s: Eval-group not allowed, use re 'eval' 1464 1465(F) A regular expression contained the C<(?{ ... })> zero-width 1466assertion, but that construct is only allowed when the C<use re 'eval'> 1467pragma is in effect. See L<perlre/(?{ code })>. 1468 1469=item Excessively long <> operator 1470 1471(F) The contents of a <> operator may not exceed the maximum size of a 1472Perl identifier. If you're just trying to glob a long list of 1473filenames, try using the glob() operator, or put the filenames into a 1474variable and glob that. 1475 1476=item exec? I'm not *that* kind of operating system 1477 1478(F) The C<exec> function is not implemented in MacPerl. See L<perlport>. 1479 1480=item Execution of %s aborted due to compilation errors 1481 1482(F) The final summary message when a Perl compilation fails. 1483 1484=item Exiting eval via %s 1485 1486(W exiting) You are exiting an eval by unconventional means, such as a 1487goto, or a loop control statement. 1488 1489=item Exiting format via %s 1490 1491(W exiting) You are exiting a format by unconventional means, such as a 1492goto, or a loop control statement. 1493 1494=item Exiting pseudo-block via %s 1495 1496(W exiting) You are exiting a rather special block construct (like a 1497sort block or subroutine) by unconventional means, such as a goto, or a 1498loop control statement. See L<perlfunc/sort>. 1499 1500=item Exiting subroutine via %s 1501 1502(W exiting) You are exiting a subroutine by unconventional means, such 1503as a goto, or a loop control statement. 1504 1505=item Exiting substitution via %s 1506 1507(W exiting) You are exiting a substitution by unconventional means, such 1508as a return, a goto, or a loop control statement. 1509 1510=item Explicit blessing to '' (assuming package main) 1511 1512(W misc) You are blessing a reference to a zero length string. This has 1513the effect of blessing the reference into the package main. This is 1514usually not what you want. Consider providing a default target package, 1515e.g. bless($ref, $p || 'MyPackage'); 1516 1517=item %s: Expression syntax 1518 1519(A) You've accidentally run your script through B<csh> instead of Perl. 1520Check the #! line, or manually feed your script into Perl yourself. 1521 1522=item %s failed--call queue aborted 1523 1524(F) An untrapped exception was raised while executing a CHECK, INIT, or 1525END subroutine. Processing of the remainder of the queue of such 1526routines has been prematurely ended. 1527 1528=item False [] range "%s" in regex; marked by <-- HERE in m/%s/ 1529 1530(W regexp) A character class range must start and end at a literal 1531character, not another character class like C<\d> or C<[:alpha:]>. The "-" 1532in your false range is interpreted as a literal "-". Consider quoting the 1533"-", "\-". The <-- HERE shows in the regular expression about where the 1534problem was discovered. See L<perlre>. 1535 1536=item Fatal VMS error at %s, line %d 1537 1538(P) An error peculiar to VMS. Something untoward happened in a VMS 1539system service or RTL routine; Perl's exit status should provide more 1540details. The filename in "at %s" and the line number in "line %d" tell 1541you which section of the Perl source code is distressed. 1542 1543=item fcntl is not implemented 1544 1545(F) Your machine apparently doesn't implement fcntl(). What is this, a 1546PDP-11 or something? 1547 1548=item Filehandle %s opened only for input 1549 1550(W io) You tried to write on a read-only filehandle. If you intended 1551it to be a read-write filehandle, you needed to open it with "+<" or 1552"+>" or "+>>" instead of with "<" or nothing. If you intended only to 1553write the file, use ">" or ">>". See L<perlfunc/open>. 1554 1555=item Filehandle %s opened only for output 1556 1557(W io) You tried to read from a filehandle opened only for writing, If 1558you intended it to be a read/write filehandle, you needed to open it 1559with "+<" or "+>" or "+>>" instead of with "<" or nothing. If you 1560intended only to read from the file, use "<". See L<perlfunc/open>. 1561Another possibility is that you attempted to open filedescriptor 0 1562(also known as STDIN) for output (maybe you closed STDIN earlier?). 1563 1564=item Filehandle %s reopened as %s only for input 1565 1566(W io) You opened for reading a filehandle that got the same filehandle id 1567as STDOUT or STDERR. This occurred because you closed STDOUT or STDERR 1568previously. 1569 1570=item Filehandle STDIN reopened as %s only for output 1571 1572(W io) You opened for writing a filehandle that got the same filehandle id 1573as STDIN. This occurred because you closed STDIN previously. 1574 1575=item Final $ should be \$ or $name 1576 1577(F) You must now decide whether the final $ in a string was meant to be 1578a literal dollar sign, or was meant to introduce a variable name that 1579happens to be missing. So you have to put either the backslash or the 1580name. 1581 1582=item flock() on closed filehandle %s 1583 1584(W closed) The filehandle you're attempting to flock() got itself closed 1585some time before now. Check your control flow. flock() operates on 1586filehandles. Are you attempting to call flock() on a dirhandle by the 1587same name? 1588 1589=item Format not terminated 1590 1591(F) A format must be terminated by a line with a solitary dot. Perl got 1592to the end of your file without finding such a line. 1593 1594=item Format %s redefined 1595 1596(W redefine) You redefined a format. To suppress this warning, say 1597 1598 { 1599 no warnings 'redefine'; 1600 eval "format NAME =..."; 1601 } 1602 1603=item Found = in conditional, should be == 1604 1605(W syntax) You said 1606 1607 if ($foo = 123) 1608 1609when you meant 1610 1611 if ($foo == 123) 1612 1613(or something like that). 1614 1615=item %s found where operator expected 1616 1617(S syntax) The Perl lexer knows whether to expect a term or an operator. 1618If it sees what it knows to be a term when it was expecting to see an 1619operator, it gives you this warning. Usually it indicates that an 1620operator or delimiter was omitted, such as a semicolon. 1621 1622=item gdbm store returned %d, errno %d, key "%s" 1623 1624(S) A warning from the GDBM_File extension that a store failed. 1625 1626=item gethostent not implemented 1627 1628(F) Your C library apparently doesn't implement gethostent(), probably 1629because if it did, it'd feel morally obligated to return every hostname 1630on the Internet. 1631 1632=item get%sname() on closed socket %s 1633 1634(W closed) You tried to get a socket or peer socket name on a closed 1635socket. Did you forget to check the return value of your socket() call? 1636 1637=item getpwnam returned invalid UIC %#o for user "%s" 1638 1639(S) A warning peculiar to VMS. The call to C<sys$getuai> underlying the 1640C<getpwnam> operator returned an invalid UIC. 1641 1642=item getsockopt() on closed socket %s 1643 1644(W closed) You tried to get a socket option on a closed socket. Did you 1645forget to check the return value of your socket() call? See 1646L<perlfunc/getsockopt>. 1647 1648=item Global symbol "%s" requires explicit package name 1649 1650(F) You've said "use strict vars", which indicates that all variables 1651must either be lexically scoped (using "my"), declared beforehand using 1652"our", or explicitly qualified to say which package the global variable 1653is in (using "::"). 1654 1655=item glob failed (%s) 1656 1657(W glob) Something went wrong with the external program(s) used for 1658C<glob> and C<< <*.c> >>. Usually, this means that you supplied a 1659C<glob> pattern that caused the external program to fail and exit with a 1660nonzero status. If the message indicates that the abnormal exit 1661resulted in a coredump, this may also mean that your csh (C shell) is 1662broken. If so, you should change all of the csh-related variables in 1663config.sh: If you have tcsh, make the variables refer to it as if it 1664were csh (e.g. C<full_csh='/usr/bin/tcsh'>); otherwise, make them all 1665empty (except that C<d_csh> should be C<'undef'>) so that Perl will 1666think csh is missing. In either case, after editing config.sh, run 1667C<./Configure -S> and rebuild Perl. 1668 1669=item Glob not terminated 1670 1671(F) The lexer saw a left angle bracket in a place where it was expecting 1672a term, so it's looking for the corresponding right angle bracket, and 1673not finding it. Chances are you left some needed parentheses out 1674earlier in the line, and you really meant a "less than". 1675 1676=item Got an error from DosAllocMem 1677 1678(P) An error peculiar to OS/2. Most probably you're using an obsolete 1679version of Perl, and this should not happen anyway. 1680 1681=item goto must have label 1682 1683(F) Unlike with "next" or "last", you're not allowed to goto an 1684unspecified destination. See L<perlfunc/goto>. 1685 1686=item ()-group starts with a count 1687 1688(F) A ()-group started with a count. A count is 1689supposed to follow something: a template character or a ()-group. 1690 See L<perlfunc/pack>. 1691 1692=item %s had compilation errors 1693 1694(F) The final summary message when a C<perl -c> fails. 1695 1696=item Had to create %s unexpectedly 1697 1698(S internal) A routine asked for a symbol from a symbol table that ought 1699to have existed already, but for some reason it didn't, and had to be 1700created on an emergency basis to prevent a core dump. 1701 1702=item Hash %%s missing the % in argument %d of %s() 1703 1704(D deprecated) Really old Perl let you omit the % on hash names in some 1705spots. This is now heavily deprecated. 1706 1707=item %s has too many errors 1708 1709(F) The parser has given up trying to parse the program after 10 errors. 1710Further error messages would likely be uninformative. 1711 1712=item Hexadecimal number > 0xffffffff non-portable 1713 1714(W portable) The hexadecimal number you specified is larger than 2**32-1 1715(4294967295) and therefore non-portable between systems. See 1716L<perlport> for more on portability concerns. 1717 1718=item Identifier too long 1719 1720(F) Perl limits identifiers (names for variables, functions, etc.) to 1721about 250 characters for simple names, and somewhat more for compound 1722names (like C<$A::B>). You've exceeded Perl's limits. Future versions 1723of Perl are likely to eliminate these arbitrary limitations. 1724 1725=item Illegal binary digit %s 1726 1727(F) You used a digit other than 0 or 1 in a binary number. 1728 1729=item Illegal binary digit %s ignored 1730 1731(W digit) You may have tried to use a digit other than 0 or 1 in a 1732binary number. Interpretation of the binary number stopped before the 1733offending digit. 1734 1735=item Illegal character %s (carriage return) 1736 1737(F) Perl normally treats carriage returns in the program text as it 1738would any other whitespace, which means you should never see this error 1739when Perl was built using standard options. For some reason, your 1740version of Perl appears to have been built without this support. Talk 1741to your Perl administrator. 1742 1743=item Illegal character in prototype for %s : %s 1744 1745(W syntax) An illegal character was found in a prototype declaration. Legal 1746characters in prototypes are $, @, %, *, ;, [, ], &, and \. 1747 1748=item Illegal declaration of anonymous subroutine 1749 1750(F) When using the C<sub> keyword to construct an anonymous subroutine, 1751you must always specify a block of code. See L<perlsub>. 1752 1753=item Illegal declaration of subroutine %s 1754 1755(F) A subroutine was not declared correctly. See L<perlsub>. 1756 1757=item Illegal division by zero 1758 1759(F) You tried to divide a number by 0. Either something was wrong in 1760your logic, or you need to put a conditional in to guard against 1761meaningless input. 1762 1763=item Illegal hexadecimal digit %s ignored 1764 1765(W digit) You may have tried to use a character other than 0 - 9 or 1766A - F, a - f in a hexadecimal number. Interpretation of the hexadecimal 1767number stopped before the illegal character. 1768 1769=item Illegal modulus zero 1770 1771(F) You tried to divide a number by 0 to get the remainder. Most 1772numbers don't take to this kindly. 1773 1774=item Illegal number of bits in vec 1775 1776(F) The number of bits in vec() (the third argument) must be a power of 1777two from 1 to 32 (or 64, if your platform supports that). 1778 1779=item Illegal octal digit %s 1780 1781(F) You used an 8 or 9 in an octal number. 1782 1783=item Illegal octal digit %s ignored 1784 1785(W digit) You may have tried to use an 8 or 9 in an octal number. 1786Interpretation of the octal number stopped before the 8 or 9. 1787 1788=item Illegal switch in PERL5OPT: %s 1789 1790(X) The PERL5OPT environment variable may only be used to set the 1791following switches: B<-[DIMUdmtw]>. 1792 1793=item Ill-formed CRTL environ value "%s" 1794 1795(W internal) A warning peculiar to VMS. Perl tried to read the CRTL's 1796internal environ array, and encountered an element without the C<=> 1797delimiter used to separate keys from values. The element is ignored. 1798 1799=item Ill-formed message in prime_env_iter: |%s| 1800 1801(W internal) A warning peculiar to VMS. Perl tried to read a logical 1802name or CLI symbol definition when preparing to iterate over %ENV, and 1803didn't see the expected delimiter between key and value, so the line was 1804ignored. 1805 1806=item (in cleanup) %s 1807 1808(W misc) This prefix usually indicates that a DESTROY() method raised 1809the indicated exception. Since destructors are usually called by the 1810system at arbitrary points during execution, and often a vast number of 1811times, the warning is issued only once for any number of failures that 1812would otherwise result in the same message being repeated. 1813 1814Failure of user callbacks dispatched using the C<G_KEEPERR> flag could 1815also result in this warning. See L<perlcall/G_KEEPERR>. 1816 1817=item In EBCDIC the v-string components cannot exceed 2147483647 1818 1819(F) An error peculiar to EBCDIC. Internally, v-strings are stored as 1820Unicode code points, and encoded in EBCDIC as UTF-EBCDIC. The UTF-EBCDIC 1821encoding is limited to code points no larger than 2147483647 (0x7FFFFFFF). 1822 1823=item Insecure dependency in %s 1824 1825(F) You tried to do something that the tainting mechanism didn't like. 1826The tainting mechanism is turned on when you're running setuid or 1827setgid, or when you specify B<-T> to turn it on explicitly. The 1828tainting mechanism labels all data that's derived directly or indirectly 1829from the user, who is considered to be unworthy of your trust. If any 1830such data is used in a "dangerous" operation, you get this error. See 1831L<perlsec> for more information. 1832 1833=item Insecure directory in %s 1834 1835(F) You can't use system(), exec(), or a piped open in a setuid or 1836setgid script if C<$ENV{PATH}> contains a directory that is writable by 1837the world. Also, the PATH must not contain any relative directory. 1838See L<perlsec>. 1839 1840=item Insecure $ENV{%s} while running %s 1841 1842(F) You can't use system(), exec(), or a piped open in a setuid or 1843setgid script if any of C<$ENV{PATH}>, C<$ENV{IFS}>, C<$ENV{CDPATH}>, 1844C<$ENV{ENV}>, C<$ENV{BASH_ENV}> or C<$ENV{TERM}> are derived from data 1845supplied (or potentially supplied) by the user. The script must set 1846the path to a known value, using trustworthy data. See L<perlsec>. 1847 1848=item Integer overflow in %s number 1849 1850(W overflow) The hexadecimal, octal or binary number you have specified 1851either as a literal or as an argument to hex() or oct() is too big for 1852your architecture, and has been converted to a floating point number. 1853On a 32-bit architecture the largest hexadecimal, octal or binary number 1854representable without overflow is 0xFFFFFFFF, 037777777777, or 18550b11111111111111111111111111111111 respectively. Note that Perl 1856transparently promotes all numbers to a floating point representation 1857internally--subject to loss of precision errors in subsequent 1858operations. 1859 1860=item Internal disaster in regex; marked by <-- HERE in m/%s/ 1861 1862(P) Something went badly wrong in the regular expression parser. 1863The <-- HERE shows in the regular expression about where the problem was 1864discovered. 1865 1866=item Internal inconsistency in tracking vforks 1867 1868(S) A warning peculiar to VMS. Perl keeps track of the number of times 1869you've called C<fork> and C<exec>, to determine whether the current call 1870to C<exec> should affect the current script or a subprocess (see 1871L<perlvms/"exec LIST">). Somehow, this count has become scrambled, so 1872Perl is making a guess and treating this C<exec> as a request to 1873terminate the Perl script and execute the specified command. 1874 1875=item Internal urp in regex; marked by <-- HERE in m/%s/ 1876 1877(P) Something went badly awry in the regular expression parser. The 1878<-- HERE shows in the regular expression about where the problem was 1879discovered. 1880 1881=item %s (...) interpreted as function 1882 1883(W syntax) You've run afoul of the rule that says that any list operator 1884followed by parentheses turns into a function, with all the list 1885operators arguments found inside the parentheses. See 1886L<perlop/Terms and List Operators (Leftward)>. 1887 1888=item Invalid %s attribute: %s 1889 1890The indicated attribute for a subroutine or variable was not recognized 1891by Perl or by a user-supplied handler. See L<attributes>. 1892 1893=item Invalid %s attributes: %s 1894 1895The indicated attributes for a subroutine or variable were not 1896recognized by Perl or by a user-supplied handler. See L<attributes>. 1897 1898=item Invalid conversion in %s: "%s" 1899 1900(W printf) Perl does not understand the given format conversion. See 1901L<perlfunc/sprintf>. 1902 1903=item Invalid [] range "%s" in regex; marked by <-- HERE in m/%s/ 1904 1905(F) The range specified in a character class had a minimum character 1906greater than the maximum character. One possibility is that you forgot the 1907C<{}> from your ending C<\x{}> - C<\x> without the curly braces can go only 1908up to C<ff>. The <-- HERE shows in the regular expression about where the 1909problem was discovered. See L<perlre>. 1910 1911=item Invalid range "%s" in transliteration operator 1912 1913(F) The range specified in the tr/// or y/// operator had a minimum 1914character greater than the maximum character. See L<perlop>. 1915 1916=item Invalid separator character %s in attribute list 1917 1918(F) Something other than a colon or whitespace was seen between the 1919elements of an attribute list. If the previous attribute had a 1920parenthesised parameter list, perhaps that list was terminated too soon. 1921See L<attributes>. 1922 1923=item Invalid separator character %s in PerlIO layer specification %s 1924 1925(W layer) When pushing layers onto the Perl I/O system, something other than a 1926colon or whitespace was seen between the elements of a layer list. 1927If the previous attribute had a parenthesised parameter list, perhaps that 1928list was terminated too soon. 1929 1930=item Invalid type '%s' in %s 1931 1932(F) The given character is not a valid pack or unpack type. 1933See L<perlfunc/pack>. 1934(W) The given character is not a valid pack or unpack type but used to be 1935silently ignored. 1936 1937=item ioctl is not implemented 1938 1939(F) Your machine apparently doesn't implement ioctl(), which is pretty 1940strange for a machine that supports C. 1941 1942=item ioctl() on unopened %s 1943 1944(W unopened) You tried ioctl() on a filehandle that was never opened. 1945Check you control flow and number of arguments. 1946 1947=item IO layers (like "%s") unavailable 1948 1949(F) Your Perl has not been configured to have PerlIO, and therefore 1950you cannot use IO layers. To have PerlIO Perl must be configured 1951with 'useperlio'. 1952 1953=item IO::Socket::atmark not implemented on this architecture 1954 1955(F) Your machine doesn't implement the sockatmark() functionality, 1956neither as a system call or an ioctl call (SIOCATMARK). 1957 1958=item `%s' is not a code reference 1959 1960(W overload) The second (fourth, sixth, ...) argument of overload::constant 1961needs to be a code reference. Either an anonymous subroutine, or a reference 1962to a subroutine. 1963 1964=item `%s' is not an overloadable type 1965 1966(W overload) You tried to overload a constant type the overload package is 1967unaware of. 1968 1969=item junk on end of regexp 1970 1971(P) The regular expression parser is confused. 1972 1973=item Label not found for "last %s" 1974 1975(F) You named a loop to break out of, but you're not currently in a loop 1976of that name, not even if you count where you were called from. See 1977L<perlfunc/last>. 1978 1979=item Label not found for "next %s" 1980 1981(F) You named a loop to continue, but you're not currently in a loop of 1982that name, not even if you count where you were called from. See 1983L<perlfunc/last>. 1984 1985=item Label not found for "redo %s" 1986 1987(F) You named a loop to restart, but you're not currently in a loop of 1988that name, not even if you count where you were called from. See 1989L<perlfunc/last>. 1990 1991=item leaving effective %s failed 1992 1993(F) While under the C<use filetest> pragma, switching the real and 1994effective uids or gids failed. 1995 1996=item length/code after end of string in unpack 1997 1998(F) While unpacking, the string buffer was already used up when an unpack 1999length/code combination tried to obtain more data. This results in 2000an undefined value for the length. See L<perlfunc/pack>. 2001 2002=item listen() on closed socket %s 2003 2004(W closed) You tried to do a listen on a closed socket. Did you forget 2005to check the return value of your socket() call? See 2006L<perlfunc/listen>. 2007 2008=item Lookbehind longer than %d not implemented in regex; marked by <-- HERE in m/%s/ 2009 2010(F) There is currently a limit on the length of string which lookbehind can 2011handle. This restriction may be eased in a future release. The <-- HERE 2012shows in the regular expression about where the problem was discovered. 2013 2014=item lstat() on filehandle %s 2015 2016(W io) You tried to do an lstat on a filehandle. What did you mean 2017by that? lstat() makes sense only on filenames. (Perl did a fstat() 2018instead on the filehandle.) 2019 2020=item Lvalue subs returning %s not implemented yet 2021 2022(F) Due to limitations in the current implementation, array and hash 2023values cannot be returned in subroutines used in lvalue context. See 2024L<perlsub/"Lvalue subroutines">. 2025 2026=item Malformed integer in [] in pack 2027 2028(F) Between the brackets enclosing a numeric repeat count only digits 2029are permitted. See L<perlfunc/pack>. 2030 2031=item Malformed integer in [] in unpack 2032 2033(F) Between the brackets enclosing a numeric repeat count only digits 2034are permitted. See L<perlfunc/pack>. 2035 2036=item Malformed PERLLIB_PREFIX 2037 2038(F) An error peculiar to OS/2. PERLLIB_PREFIX should be of the form 2039 2040 prefix1;prefix2 2041 2042or 2043 prefix1 prefix2 2044 2045with nonempty prefix1 and prefix2. If C<prefix1> is indeed a prefix of 2046a builtin library search path, prefix2 is substituted. The error may 2047appear if components are not found, or are too long. See 2048"PERLLIB_PREFIX" in L<perlos2>. 2049 2050=item Malformed prototype for %s: %s 2051 2052(F) You tried to use a function with a malformed prototype. The 2053syntax of function prototypes is given a brief compile-time check for 2054obvious errors like invalid characters. A more rigorous check is run 2055when the function is called. 2056 2057=item Malformed UTF-8 character (%s) 2058 2059(S utf8) (F) Perl detected something that didn't comply with UTF-8 2060encoding rules. 2061 2062One possible cause is that you read in data that you thought to be in 2063UTF-8 but it wasn't (it was for example legacy 8-bit data). Another 2064possibility is careless use of utf8::upgrade(). 2065 2066=item Malformed UTF-16 surrogate 2067 2068Perl thought it was reading UTF-16 encoded character data but while 2069doing it Perl met a malformed Unicode surrogate. 2070 2071=item %s matches null string many times in regex; marked by <-- HERE in m/%s/ 2072 2073(W regexp) The pattern you've specified would be an infinite loop if the 2074regular expression engine didn't specifically check for that. The <-- HERE 2075shows in the regular expression about where the problem was discovered. 2076See L<perlre>. 2077 2078=item "%s" may clash with future reserved word 2079 2080(W) This warning may be due to running a perl5 script through a perl4 2081interpreter, especially if the word that is being warned about is 2082"use" or "my". 2083 2084=item % may not be used in pack 2085 2086(F) You can't pack a string by supplying a checksum, because the 2087checksumming process loses information, and you can't go the other way. 2088See L<perlfunc/unpack>. 2089 2090=item Method for operation %s not found in package %s during blessing 2091 2092(F) An attempt was made to specify an entry in an overloading table that 2093doesn't resolve to a valid subroutine. See L<overload>. 2094 2095=item Method %s not permitted 2096 2097See Server error. 2098 2099=item Might be a runaway multi-line %s string starting on line %d 2100 2101(S) An advisory indicating that the previous error may have been caused 2102by a missing delimiter on a string or pattern, because it eventually 2103ended earlier on the current line. 2104 2105=item Misplaced _ in number 2106 2107(W syntax) An underscore (underbar) in a numeric constant did not 2108separate two digits. 2109 2110=item Missing argument to -%c 2111 2112(F) The argument to the indicated command line switch must follow 2113immediately after the switch, without intervening spaces. 2114 2115=item Missing %sbrace%s on \N{} 2116 2117(F) Wrong syntax of character name literal C<\N{charname}> within 2118double-quotish context. 2119 2120=item Missing comma after first argument to %s function 2121 2122(F) While certain functions allow you to specify a filehandle or an 2123"indirect object" before the argument list, this ain't one of them. 2124 2125=item Missing command in piped open 2126 2127(W pipe) You used the C<open(FH, "| command")> or 2128C<open(FH, "command |")> construction, but the command was missing or 2129blank. 2130 2131=item Missing control char name in \c 2132 2133(F) A double-quoted string ended with "\c", without the required control 2134character name. 2135 2136=item Missing name in "my sub" 2137 2138(F) The reserved syntax for lexically scoped subroutines requires that 2139they have a name with which they can be found. 2140 2141=item Missing $ on loop variable 2142 2143(F) Apparently you've been programming in B<csh> too much. Variables 2144are always mentioned with the $ in Perl, unlike in the shells, where it 2145can vary from one line to the next. 2146 2147=item (Missing operator before %s?) 2148 2149(S syntax) This is an educated guess made in conjunction with the message 2150"%s found where operator expected". Often the missing operator is a comma. 2151 2152=item Missing right brace on %s 2153 2154(F) Missing right brace in C<\p{...}> or C<\P{...}>. 2155 2156=item Missing right curly or square bracket 2157 2158(F) The lexer counted more opening curly or square brackets than closing 2159ones. As a general rule, you'll find it's missing near the place you 2160were last editing. 2161 2162=item (Missing semicolon on previous line?) 2163 2164(S syntax) This is an educated guess made in conjunction with the message 2165"%s found where operator expected". Don't automatically put a semicolon on 2166the previous line just because you saw this message. 2167 2168=item Modification of a read-only value attempted 2169 2170(F) You tried, directly or indirectly, to change the value of a 2171constant. You didn't, of course, try "2 = 1", because the compiler 2172catches that. But an easy way to do the same thing is: 2173 2174 sub mod { $_[0] = 1 } 2175 mod(2); 2176 2177Another way is to assign to a substr() that's off the end of the string. 2178 2179Yet another way is to assign to a C<foreach> loop I<VAR> when I<VAR> 2180is aliased to a constant in the look I<LIST>: 2181 2182 $x = 1; 2183 foreach my $n ($x, 2) { 2184 $n *= 2; # modifies the $x, but fails on attempt to modify the 2 2185 } 2186 2187=item Modification of non-creatable array value attempted, %s 2188 2189(F) You tried to make an array value spring into existence, and the 2190subscript was probably negative, even counting from end of the array 2191backwards. 2192 2193=item Modification of non-creatable hash value attempted, %s 2194 2195(P) You tried to make a hash value spring into existence, and it 2196couldn't be created for some peculiar reason. 2197 2198=item Module name must be constant 2199 2200(F) Only a bare module name is allowed as the first argument to a "use". 2201 2202=item Module name required with -%c option 2203 2204(F) The C<-M> or C<-m> options say that Perl should load some module, but 2205you omitted the name of the module. Consult L<perlrun> for full details 2206about C<-M> and C<-m>. 2207 2208=item More than one argument to open 2209 2210(F) The C<open> function has been asked to open multiple files. This 2211can happen if you are trying to open a pipe to a command that takes a 2212list of arguments, but have forgotten to specify a piped open mode. 2213See L<perlfunc/open> for details. 2214 2215=item msg%s not implemented 2216 2217(F) You don't have System V message IPC on your system. 2218 2219=item Multidimensional syntax %s not supported 2220 2221(W syntax) Multidimensional arrays aren't written like C<$foo[1,2,3]>. 2222They're written like C<$foo[1][2][3]>, as in C. 2223 2224=item '/' must be followed by 'a*', 'A*' or 'Z*' 2225 2226(F) You had a pack template indicating a counted-length string, 2227Currently the only things that can have their length counted are a*, A* 2228or Z*. See L<perlfunc/pack>. 2229 2230=item '/' must follow a numeric type in unpack 2231 2232(F) You had an unpack template that contained a '/', but this did not 2233follow some unpack specification producing a numeric value. 2234See L<perlfunc/pack>. 2235 2236=item "my sub" not yet implemented 2237 2238(F) Lexically scoped subroutines are not yet implemented. Don't try 2239that yet. 2240 2241=item "my" variable %s can't be in a package 2242 2243(F) Lexically scoped variables aren't in a package, so it doesn't make 2244sense to try to declare one with a package qualifier on the front. Use 2245local() if you want to localize a package variable. 2246 2247=item Name "%s::%s" used only once: possible typo 2248 2249(W once) Typographical errors often show up as unique variable names. 2250If you had a good reason for having a unique name, then just mention it 2251again somehow to suppress the message. The C<our> declaration is 2252provided for this purpose. 2253 2254NOTE: This warning detects symbols that have been used only once so $c, @c, 2255%c, *c, &c, sub c{}, c(), and c (the filehandle or format) are considered 2256the same; if a program uses $c only once but also uses any of the others it 2257will not trigger this warning. 2258 2259=item Negative '/' count in unpack 2260 2261(F) The length count obtained from a length/code unpack operation was 2262negative. See L<perlfunc/pack>. 2263 2264=item Negative length 2265 2266(F) You tried to do a read/write/send/recv operation with a buffer 2267length that is less than 0. This is difficult to imagine. 2268 2269=item Negative offset to vec in lvalue context 2270 2271(F) When C<vec> is called in an lvalue context, the second argument must be 2272greater than or equal to zero. 2273 2274=item Nested quantifiers in regex; marked by <-- HERE in m/%s/ 2275 2276(F) You can't quantify a quantifier without intervening parentheses. So 2277things like ** or +* or ?* are illegal. The <-- HERE shows in the regular 2278expression about where the problem was discovered. 2279 2280Note that the minimal matching quantifiers, C<*?>, C<+?>, and 2281C<??> appear to be nested quantifiers, but aren't. See L<perlre>. 2282 2283=item %s never introduced 2284 2285(S internal) The symbol in question was declared but somehow went out of 2286scope before it could possibly have been used. 2287 2288=item Newline in left-justified string for %s 2289 2290(W printf) There is a newline in a string to be left justified by 2291C<printf> or C<sprintf>. 2292 2293The padding spaces will appear after the newline, which is probably not 2294what you wanted. Usually you should remove the newline from the string 2295and put formatting characters in the C<sprintf> format. 2296 2297=item No %s allowed while running setuid 2298 2299(F) Certain operations are deemed to be too insecure for a setuid or 2300setgid script to even be allowed to attempt. Generally speaking there 2301will be another way to do what you want that is, if not secure, at least 2302securable. See L<perlsec>. 2303 2304=item No comma allowed after %s 2305 2306(F) A list operator that has a filehandle or "indirect object" is not 2307allowed to have a comma between that and the following arguments. 2308Otherwise it'd be just another one of the arguments. 2309 2310One possible cause for this is that you expected to have imported a 2311constant to your name space with B<use> or B<import> while no such 2312importing took place, it may for example be that your operating system 2313does not support that particular constant. Hopefully you did use an 2314explicit import list for the constants you expect to see, please see 2315L<perlfunc/use> and L<perlfunc/import>. While an explicit import list 2316would probably have caught this error earlier it naturally does not 2317remedy the fact that your operating system still does not support that 2318constant. Maybe you have a typo in the constants of the symbol import 2319list of B<use> or B<import> or in the constant name at the line where 2320this error was triggered? 2321 2322=item No command into which to pipe on command line 2323 2324(F) An error peculiar to VMS. Perl handles its own command line 2325redirection, and found a '|' at the end of the command line, so it 2326doesn't know where you want to pipe the output from this command. 2327 2328=item No DB::DB routine defined 2329 2330(F) The currently executing code was compiled with the B<-d> switch, but 2331for some reason the current debugger (e.g. F<perl5db.pl> or a C<Devel::> 2332module) didn't define a routine to be called at the beginning of each 2333statement. 2334 2335=item No dbm on this machine 2336 2337(P) This is counted as an internal error, because every machine should 2338supply dbm nowadays, because Perl comes with SDBM. See L<SDBM_File>. 2339 2340=item No DB::sub routine defined 2341 2342(F) The currently executing code was compiled with the B<-d> switch, but 2343for some reason the current debugger (e.g. F<perl5db.pl> or a C<Devel::> 2344module) didn't define a C<DB::sub> routine to be called at the beginning 2345of each ordinary subroutine call. 2346 2347=item No B<-e> allowed in setuid scripts 2348 2349(F) A setuid script can't be specified by the user. 2350 2351=item No error file after 2> or 2>> on command line 2352 2353(F) An error peculiar to VMS. Perl handles its own command line 2354redirection, and found a '2>' or a '2>>' on the command line, but can't 2355find the name of the file to which to write data destined for stderr. 2356 2357=item No group ending character '%c' found in template 2358 2359(F) A pack or unpack template has an opening '(' or '[' without its 2360matching counterpart. See L<perlfunc/pack>. 2361 2362=item No input file after < on command line 2363 2364(F) An error peculiar to VMS. Perl handles its own command line 2365redirection, and found a '<' on the command line, but can't find the 2366name of the file from which to read data for stdin. 2367 2368=item No #! line 2369 2370(F) The setuid emulator requires that scripts have a well-formed #! line 2371even on machines that don't support the #! construct. 2372 2373=item "no" not allowed in expression 2374 2375(F) The "no" keyword is recognized and executed at compile time, and 2376returns no useful value. See L<perlmod>. 2377 2378=item No output file after > on command line 2379 2380(F) An error peculiar to VMS. Perl handles its own command line 2381redirection, and found a lone '>' at the end of the command line, so it 2382doesn't know where you wanted to redirect stdout. 2383 2384=item No output file after > or >> on command line 2385 2386(F) An error peculiar to VMS. Perl handles its own command line 2387redirection, and found a '>' or a '>>' on the command line, but can't 2388find the name of the file to which to write data destined for stdout. 2389 2390=item No package name allowed for variable %s in "our" 2391 2392(F) Fully qualified variable names are not allowed in "our" 2393declarations, because that doesn't make much sense under existing 2394semantics. Such syntax is reserved for future extensions. 2395 2396=item No Perl script found in input 2397 2398(F) You called C<perl -x>, but no line was found in the file beginning 2399with #! and containing the word "perl". 2400 2401=item No setregid available 2402 2403(F) Configure didn't find anything resembling the setregid() call for 2404your system. 2405 2406=item No setreuid available 2407 2408(F) Configure didn't find anything resembling the setreuid() call for 2409your system. 2410 2411=item No %s specified for -%c 2412 2413(F) The indicated command line switch needs a mandatory argument, but 2414you haven't specified one. 2415 2416=item No such class %s 2417 2418(F) You provided a class qualifier in a "my" or "our" declaration, but 2419this class doesn't exist at this point in your program. 2420 2421=item No such pipe open 2422 2423(P) An error peculiar to VMS. The internal routine my_pclose() tried to 2424close a pipe which hadn't been opened. This should have been caught 2425earlier as an attempt to close an unopened filehandle. 2426 2427=item No such pseudo-hash field "%s" 2428 2429(F) You tried to access an array as a hash, but the field name used is 2430not defined. The hash at index 0 should map all valid field names to 2431array indices for that to work. 2432 2433=item No such pseudo-hash field "%s" in variable %s of type %s 2434 2435(F) You tried to access a field of a typed variable where the type does 2436not know about the field name. The field names are looked up in the 2437%FIELDS hash in the type package at compile time. The %FIELDS hash is 2438%usually set up with the 'fields' pragma. 2439 2440=item No such signal: SIG%s 2441 2442(W signal) You specified a signal name as a subscript to %SIG that was 2443not recognized. Say C<kill -l> in your shell to see the valid signal 2444names on your system. 2445 2446=item Not a CODE reference 2447 2448(F) Perl was trying to evaluate a reference to a code value (that is, a 2449subroutine), but found a reference to something else instead. You can 2450use the ref() function to find out what kind of ref it really was. See 2451also L<perlref>. 2452 2453=item Not a format reference 2454 2455(F) I'm not sure how you managed to generate a reference to an anonymous 2456format, but this indicates you did, and that it didn't exist. 2457 2458=item Not a GLOB reference 2459 2460(F) Perl was trying to evaluate a reference to a "typeglob" (that is, a 2461symbol table entry that looks like C<*foo>), but found a reference to 2462something else instead. You can use the ref() function to find out what 2463kind of ref it really was. See L<perlref>. 2464 2465=item Not a HASH reference 2466 2467(F) Perl was trying to evaluate a reference to a hash value, but found a 2468reference to something else instead. You can use the ref() function to 2469find out what kind of ref it really was. See L<perlref>. 2470 2471=item Not an ARRAY reference 2472 2473(F) Perl was trying to evaluate a reference to an array value, but found 2474a reference to something else instead. You can use the ref() function 2475to find out what kind of ref it really was. See L<perlref>. 2476 2477=item Not a perl script 2478 2479(F) The setuid emulator requires that scripts have a well-formed #! line 2480even on machines that don't support the #! construct. The line must 2481mention perl. 2482 2483=item Not a SCALAR reference 2484 2485(F) Perl was trying to evaluate a reference to a scalar value, but found 2486a reference to something else instead. You can use the ref() function 2487to find out what kind of ref it really was. See L<perlref>. 2488 2489=item Not a subroutine reference 2490 2491(F) Perl was trying to evaluate a reference to a code value (that is, a 2492subroutine), but found a reference to something else instead. You can 2493use the ref() function to find out what kind of ref it really was. See 2494also L<perlref>. 2495 2496=item Not a subroutine reference in overload table 2497 2498(F) An attempt was made to specify an entry in an overloading table that 2499doesn't somehow point to a valid subroutine. See L<overload>. 2500 2501=item Not enough arguments for %s 2502 2503(F) The function requires more arguments than you specified. 2504 2505=item Not enough format arguments 2506 2507(W syntax) A format specified more picture fields than the next line 2508supplied. See L<perlform>. 2509 2510=item %s: not found 2511 2512(A) You've accidentally run your script through the Bourne shell instead 2513of Perl. Check the #! line, or manually feed your script into Perl 2514yourself. 2515 2516=item no UTC offset information; assuming local time is UTC 2517 2518(S) A warning peculiar to VMS. Perl was unable to find the local 2519timezone offset, so it's assuming that local system time is equivalent 2520to UTC. If it's not, define the logical name 2521F<SYS$TIMEZONE_DIFFERENTIAL> to translate to the number of seconds which 2522need to be added to UTC to get local time. 2523 2524=item Non-string passed as bitmask 2525 2526(W misc) A number has been passed as a bitmask argument to select(). 2527Use the vec() function to construct the file descriptor bitmasks for 2528select. See L<perlfunc/select> 2529 2530=item Null filename used 2531 2532(F) You can't require the null filename, especially because on many 2533machines that means the current directory! See L<perlfunc/require>. 2534 2535=item NULL OP IN RUN 2536 2537(P debugging) Some internal routine called run() with a null opcode 2538pointer. 2539 2540=item Null picture in formline 2541 2542(F) The first argument to formline must be a valid format picture 2543specification. It was found to be empty, which probably means you 2544supplied it an uninitialized value. See L<perlform>. 2545 2546=item Null realloc 2547 2548(P) An attempt was made to realloc NULL. 2549 2550=item NULL regexp argument 2551 2552(P) The internal pattern matching routines blew it big time. 2553 2554=item NULL regexp parameter 2555 2556(P) The internal pattern matching routines are out of their gourd. 2557 2558=item Number too long 2559 2560(F) Perl limits the representation of decimal numbers in programs to 2561about 250 characters. You've exceeded that length. Future 2562versions of Perl are likely to eliminate this arbitrary limitation. In 2563the meantime, try using scientific notation (e.g. "1e6" instead of 2564"1_000_000"). 2565 2566=item Octal number in vector unsupported 2567 2568(F) Numbers with a leading C<0> are not currently allowed in vectors. 2569The octal number interpretation of such numbers may be supported in a 2570future version. 2571 2572=item Octal number > 037777777777 non-portable 2573 2574(W portable) The octal number you specified is larger than 2**32-1 2575(4294967295) and therefore non-portable between systems. See 2576L<perlport> for more on portability concerns. 2577 2578See also L<perlport> for writing portable code. 2579 2580=item Odd number of arguments for overload::constant 2581 2582(W overload) The call to overload::constant contained an odd number of 2583arguments. The arguments should come in pairs. 2584 2585=item Odd number of elements in anonymous hash 2586 2587(W misc) You specified an odd number of elements to initialize a hash, 2588which is odd, because hashes come in key/value pairs. 2589 2590=item Odd number of elements in hash assignment 2591 2592(W misc) You specified an odd number of elements to initialize a hash, 2593which is odd, because hashes come in key/value pairs. 2594 2595=item Offset outside string 2596 2597(F) You tried to do a read/write/send/recv operation with an offset 2598pointing outside the buffer. This is difficult to imagine. The sole 2599exception to this is that C<sysread()>ing past the buffer will extend 2600the buffer and zero pad the new area. 2601 2602=item %s() on unopened %s 2603 2604(W unopened) An I/O operation was attempted on a filehandle that was 2605never initialized. You need to do an open(), a sysopen(), or a socket() 2606call, or call a constructor from the FileHandle package. 2607 2608=item -%s on unopened filehandle %s 2609 2610(W unopened) You tried to invoke a file test operator on a filehandle 2611that isn't open. Check your control flow. See also L<perlfunc/-X>. 2612 2613=item oops: oopsAV 2614 2615(S internal) An internal warning that the grammar is screwed up. 2616 2617=item oops: oopsHV 2618 2619(S internal) An internal warning that the grammar is screwed up. 2620 2621=item Operation "%s": no method found, %s 2622 2623(F) An attempt was made to perform an overloaded operation for which no 2624handler was defined. While some handlers can be autogenerated in terms 2625of other handlers, there is no default handler for any operation, unless 2626C<fallback> overloading key is specified to be true. See L<overload>. 2627 2628=item Operator or semicolon missing before %s 2629 2630(S ambiguous) You used a variable or subroutine call where the parser 2631was expecting an operator. The parser has assumed you really meant to 2632use an operator, but this is highly likely to be incorrect. For 2633example, if you say "*foo *foo" it will be interpreted as if you said 2634"*foo * 'foo'". 2635 2636=item "our" variable %s redeclared 2637 2638(W misc) You seem to have already declared the same global once before 2639in the current lexical scope. 2640 2641=item Out of memory! 2642 2643(X) The malloc() function returned 0, indicating there was insufficient 2644remaining memory (or virtual memory) to satisfy the request. Perl has 2645no option but to exit immediately. 2646 2647At least in Unix you may be able to get past this by increasing your 2648process datasize limits: in csh/tcsh use C<limit> and 2649C<limit datasize n> (where C<n> is the number of kilobytes) to check 2650the current limits and change them, and in ksh/bash/zsh use C<ulimit -a> 2651and C<ulimit -d n>, respectively. 2652 2653=item Out of memory during %s extend 2654 2655(X) An attempt was made to extend an array, a list, or a string beyond 2656the largest possible memory allocation. 2657 2658=item Out of memory during "large" request for %s 2659 2660(F) The malloc() function returned 0, indicating there was insufficient 2661remaining memory (or virtual memory) to satisfy the request. However, 2662the request was judged large enough (compile-time default is 64K), so a 2663possibility to shut down by trapping this error is granted. 2664 2665=item Out of memory during request for %s 2666 2667(X|F) The malloc() function returned 0, indicating there was 2668insufficient remaining memory (or virtual memory) to satisfy the 2669request. 2670 2671The request was judged to be small, so the possibility to trap it 2672depends on the way perl was compiled. By default it is not trappable. 2673However, if compiled for this, Perl may use the contents of C<$^M> as an 2674emergency pool after die()ing with this message. In this case the error 2675is trappable I<once>, and the error message will include the line and file 2676where the failed request happened. 2677 2678=item Out of memory during ridiculously large request 2679 2680(F) You can't allocate more than 2^31+"small amount" bytes. This error 2681is most likely to be caused by a typo in the Perl program. e.g., 2682C<$arr[time]> instead of C<$arr[$time]>. 2683 2684=item Out of memory for yacc stack 2685 2686(F) The yacc parser wanted to grow its stack so it could continue 2687parsing, but realloc() wouldn't give it more memory, virtual or 2688otherwise. 2689 2690=item '@' outside of string in unpack 2691 2692(F) You had a template that specified an absolute position outside 2693the string being unpacked. See L<perlfunc/pack>. 2694 2695=item %s package attribute may clash with future reserved word: %s 2696 2697(W reserved) A lowercase attribute name was used that had a 2698package-specific handler. That name might have a meaning to Perl itself 2699some day, even though it doesn't yet. Perhaps you should use a 2700mixed-case attribute name, instead. See L<attributes>. 2701 2702=item pack/unpack repeat count overflow 2703 2704(F) You can't specify a repeat count so large that it overflows your 2705signed integers. See L<perlfunc/pack>. 2706 2707=item page overflow 2708 2709(W io) A single call to write() produced more lines than can fit on a 2710page. See L<perlform>. 2711 2712=item panic: %s 2713 2714(P) An internal error. 2715 2716=item panic: ck_grep 2717 2718(P) Failed an internal consistency check trying to compile a grep. 2719 2720=item panic: ck_split 2721 2722(P) Failed an internal consistency check trying to compile a split. 2723 2724=item panic: corrupt saved stack index 2725 2726(P) The savestack was requested to restore more localized values than 2727there are in the savestack. 2728 2729=item panic: del_backref 2730 2731(P) Failed an internal consistency check while trying to reset a weak 2732reference. 2733 2734=item panic: Devel::DProf inconsistent subroutine return 2735 2736(P) Devel::DProf called a subroutine that exited using goto(LABEL), 2737last(LABEL) or next(LABEL). Leaving that way a subroutine called from 2738an XSUB will lead very probably to a crash of the interpreter. This is 2739a bug that will hopefully one day get fixed. 2740 2741=item panic: die %s 2742 2743(P) We popped the context stack to an eval context, and then discovered 2744it wasn't an eval context. 2745 2746=item panic: do_subst 2747 2748(P) The internal pp_subst() routine was called with invalid operational 2749data. 2750 2751=item panic: do_trans_%s 2752 2753(P) The internal do_trans routines were called with invalid operational 2754data. 2755 2756=item panic: frexp 2757 2758(P) The library function frexp() failed, making printf("%f") impossible. 2759 2760=item panic: goto 2761 2762(P) We popped the context stack to a context with the specified label, 2763and then discovered it wasn't a context we know how to do a goto in. 2764 2765=item panic: INTERPCASEMOD 2766 2767(P) The lexer got into a bad state at a case modifier. 2768 2769=item panic: INTERPCONCAT 2770 2771(P) The lexer got into a bad state parsing a string with brackets. 2772 2773=item panic: kid popen errno read 2774 2775(F) forked child returned an incomprehensible message about its errno. 2776 2777=item panic: last 2778 2779(P) We popped the context stack to a block context, and then discovered 2780it wasn't a block context. 2781 2782=item panic: leave_scope clearsv 2783 2784(P) A writable lexical variable became read-only somehow within the 2785scope. 2786 2787=item panic: leave_scope inconsistency 2788 2789(P) The savestack probably got out of sync. At least, there was an 2790invalid enum on the top of it. 2791 2792=item panic: magic_killbackrefs 2793 2794(P) Failed an internal consistency check while trying to reset all weak 2795references to an object. 2796 2797=item panic: malloc 2798 2799(P) Something requested a negative number of bytes of malloc. 2800 2801=item panic: mapstart 2802 2803(P) The compiler is screwed up with respect to the map() function. 2804 2805=item panic: memory wrap 2806 2807(P) Something tried to allocate more memory than possible. 2808 2809=item panic: null array 2810 2811(P) One of the internal array routines was passed a null AV pointer. 2812 2813=item panic: pad_alloc 2814 2815(P) The compiler got confused about which scratch pad it was allocating 2816and freeing temporaries and lexicals from. 2817 2818=item panic: pad_free curpad 2819 2820(P) The compiler got confused about which scratch pad it was allocating 2821and freeing temporaries and lexicals from. 2822 2823=item panic: pad_free po 2824 2825(P) An invalid scratch pad offset was detected internally. 2826 2827=item panic: pad_reset curpad 2828 2829(P) The compiler got confused about which scratch pad it was allocating 2830and freeing temporaries and lexicals from. 2831 2832=item panic: pad_sv po 2833 2834(P) An invalid scratch pad offset was detected internally. 2835 2836=item panic: pad_swipe curpad 2837 2838(P) The compiler got confused about which scratch pad it was allocating 2839and freeing temporaries and lexicals from. 2840 2841=item panic: pad_swipe po 2842 2843(P) An invalid scratch pad offset was detected internally. 2844 2845=item panic: pp_iter 2846 2847(P) The foreach iterator got called in a non-loop context frame. 2848 2849=item panic: pp_match%s 2850 2851(P) The internal pp_match() routine was called with invalid operational 2852data. 2853 2854=item panic: pp_split 2855 2856(P) Something terrible went wrong in setting up for the split. 2857 2858=item panic: realloc 2859 2860(P) Something requested a negative number of bytes of realloc. 2861 2862=item panic: restartop 2863 2864(P) Some internal routine requested a goto (or something like it), and 2865didn't supply the destination. 2866 2867=item panic: return 2868 2869(P) We popped the context stack to a subroutine or eval context, and 2870then discovered it wasn't a subroutine or eval context. 2871 2872=item panic: scan_num 2873 2874(P) scan_num() got called on something that wasn't a number. 2875 2876=item panic: sv_insert 2877 2878(P) The sv_insert() routine was told to remove more string than there 2879was string. 2880 2881=item panic: top_env 2882 2883(P) The compiler attempted to do a goto, or something weird like that. 2884 2885=item panic: utf16_to_utf8: odd bytelen 2886 2887(P) Something tried to call utf16_to_utf8 with an odd (as opposed 2888to even) byte length. 2889 2890=item panic: yylex 2891 2892(P) The lexer got into a bad state while processing a case modifier. 2893 2894=item Parentheses missing around "%s" list 2895 2896(W parenthesis) You said something like 2897 2898 my $foo, $bar = @_; 2899 2900when you meant 2901 2902 my ($foo, $bar) = @_; 2903 2904Remember that "my", "our", and "local" bind tighter than comma. 2905 2906=item C<-p> destination: %s 2907 2908(F) An error occurred during the implicit output invoked by the C<-p> 2909command-line switch. (This output goes to STDOUT unless you've 2910redirected it with select().) 2911 2912=item (perhaps you forgot to load "%s"?) 2913 2914(F) This is an educated guess made in conjunction with the message 2915"Can't locate object method \"%s\" via package \"%s\"". It often means 2916that a method requires a package that has not been loaded. 2917 2918=item Perl %s required--this is only version %s, stopped 2919 2920(F) The module in question uses features of a version of Perl more 2921recent than the currently running version. How long has it been since 2922you upgraded, anyway? See L<perlfunc/require>. 2923 2924=item PERL_SH_DIR too long 2925 2926(F) An error peculiar to OS/2. PERL_SH_DIR is the directory to find the 2927C<sh>-shell in. See "PERL_SH_DIR" in L<perlos2>. 2928 2929=item PERL_SIGNALS illegal: "%s" 2930 2931See L<perlrun/PERL_SIGNALS> for legal values. 2932 2933=item perl: warning: Setting locale failed. 2934 2935(S) The whole warning message will look something like: 2936 2937 perl: warning: Setting locale failed. 2938 perl: warning: Please check that your locale settings: 2939 LC_ALL = "En_US", 2940 LANG = (unset) 2941 are supported and installed on your system. 2942 perl: warning: Falling back to the standard locale ("C"). 2943 2944Exactly what were the failed locale settings varies. In the above the 2945settings were that the LC_ALL was "En_US" and the LANG had no value. 2946This error means that Perl detected that you and/or your operating 2947system supplier and/or system administrator have set up the so-called 2948locale system but Perl could not use those settings. This was not 2949dead serious, fortunately: there is a "default locale" called "C" that 2950Perl can and will use, the script will be run. Before you really fix 2951the problem, however, you will get the same error message each time 2952you run Perl. How to really fix the problem can be found in 2953L<perllocale> section B<LOCALE PROBLEMS>. 2954 2955=item Permission denied 2956 2957(F) The setuid emulator in suidperl decided you were up to no good. 2958 2959=item pid %x not a child 2960 2961(W exec) A warning peculiar to VMS. Waitpid() was asked to wait for a 2962process which isn't a subprocess of the current process. While this is 2963fine from VMS' perspective, it's probably not what you intended. 2964 2965=item 'P' must have an explicit size in unpack 2966 2967(F) The unpack format P must have an explicit size, not "*". 2968 2969=item B<-P> not allowed for setuid/setgid script 2970 2971(F) The script would have to be opened by the C preprocessor by name, 2972which provides a race condition that breaks security. 2973 2974=item POSIX class [:%s:] unknown in regex; marked by <-- HERE in m/%s/ 2975 2976(F) The class in the character class [: :] syntax is unknown. The <-- HERE 2977shows in the regular expression about where the problem was discovered. 2978Note that the POSIX character classes do B<not> have the C<is> prefix 2979the corresponding C interfaces have: in other words, it's C<[[:print:]]>, 2980not C<isprint>. See L<perlre>. 2981 2982=item POSIX getpgrp can't take an argument 2983 2984(F) Your system has POSIX getpgrp(), which takes no argument, unlike 2985the BSD version, which takes a pid. 2986 2987=item POSIX syntax [%s] belongs inside character classes in regex; marked by <-- HERE in m/%s/ 2988 2989(W regexp) The character class constructs [: :], [= =], and [. .] go 2990I<inside> character classes, the [] are part of the construct, for example: 2991/[012[:alpha:]345]/. Note that [= =] and [. .] are not currently 2992implemented; they are simply placeholders for future extensions and will 2993cause fatal errors. The <-- HERE shows in the regular expression about 2994where the problem was discovered. See L<perlre>. 2995 2996=item POSIX syntax [. .] is reserved for future extensions in regex; marked by <-- HERE in m/%s/ 2997 2998(F regexp) Within regular expression character classes ([]) the syntax 2999beginning with "[." and ending with ".]" is reserved for future extensions. 3000If you need to represent those character sequences inside a regular 3001expression character class, just quote the square brackets with the 3002backslash: "\[." and ".\]". The <-- HERE shows in the regular expression 3003about where the problem was discovered. See L<perlre>. 3004 3005=item POSIX syntax [= =] is reserved for future extensions in regex; marked by <-- HERE in m/%s/ 3006 3007(F) Within regular expression character classes ([]) the syntax beginning 3008with "[=" and ending with "=]" is reserved for future extensions. If you 3009need to represent those character sequences inside a regular expression 3010character class, just quote the square brackets with the backslash: "\[=" 3011and "=\]". The <-- HERE shows in the regular expression about where the 3012problem was discovered. See L<perlre>. 3013 3014=item Possible attempt to put comments in qw() list 3015 3016(W qw) qw() lists contain items separated by whitespace; as with literal 3017strings, comment characters are not ignored, but are instead treated as 3018literal data. (You may have used different delimiters than the 3019parentheses shown here; braces are also frequently used.) 3020 3021You probably wrote something like this: 3022 3023 @list = qw( 3024 a # a comment 3025 b # another comment 3026 ); 3027 3028when you should have written this: 3029 3030 @list = qw( 3031 a 3032 b 3033 ); 3034 3035If you really want comments, build your list the 3036old-fashioned way, with quotes and commas: 3037 3038 @list = ( 3039 'a', # a comment 3040 'b', # another comment 3041 ); 3042 3043=item Possible attempt to separate words with commas 3044 3045(W qw) qw() lists contain items separated by whitespace; therefore 3046commas aren't needed to separate the items. (You may have used 3047different delimiters than the parentheses shown here; braces are also 3048frequently used.) 3049 3050You probably wrote something like this: 3051 3052 qw! a, b, c !; 3053 3054which puts literal commas into some of the list items. Write it without 3055commas if you don't want them to appear in your data: 3056 3057 qw! a b c !; 3058 3059=item Possible memory corruption: %s overflowed 3rd argument 3060 3061(F) An ioctl() or fcntl() returned more than Perl was bargaining for. 3062Perl guesses a reasonable buffer size, but puts a sentinel byte at the 3063end of the buffer just in case. This sentinel byte got clobbered, and 3064Perl assumes that memory is now corrupted. See L<perlfunc/ioctl>. 3065 3066=item Possible precedence problem on bitwise %c operator 3067 3068(W precedence) Your program uses a bitwise logical operator in conjunction 3069with a numeric comparison operator, like this : 3070 3071 if ($x & $y == 0) { ... } 3072 3073This expression is actually equivalent to C<$x & ($y == 0)>, due to the 3074higher precedence of C<==>. This is probably not what you want. (If you 3075really meant to write this, disable the warning, or, better, put the 3076parentheses explicitly and write C<$x & ($y == 0)>). 3077 3078=item Possible unintended interpolation of %s in string 3079 3080(W ambiguous) You said something like `@foo' in a double-quoted string 3081but there was no array C<@foo> in scope at the time. If you wanted a 3082literal @foo, then write it as \@foo; otherwise find out what happened 3083to the array you apparently lost track of. 3084 3085=item Possible Y2K bug: %s 3086 3087(W y2k) You are concatenating the number 19 with another number, which 3088could be a potential Year 2000 problem. 3089 3090=item pragma "attrs" is deprecated, use "sub NAME : ATTRS" instead 3091 3092(D deprecated) You have written something like this: 3093 3094 sub doit 3095 { 3096 use attrs qw(locked); 3097 } 3098 3099You should use the new declaration syntax instead. 3100 3101 sub doit : locked 3102 { 3103 ... 3104 3105The C<use attrs> pragma is now obsolete, and is only provided for 3106backward-compatibility. See L<perlsub/"Subroutine Attributes">. 3107 3108=item Precedence problem: open %s should be open(%s) 3109 3110(S precedence) The old irregular construct 3111 3112 open FOO || die; 3113 3114is now misinterpreted as 3115 3116 open(FOO || die); 3117 3118because of the strict regularization of Perl 5's grammar into unary and 3119list operators. (The old open was a little of both.) You must put 3120parentheses around the filehandle, or use the new "or" operator instead 3121of "||". 3122 3123=item Premature end of script headers 3124 3125See Server error. 3126 3127=item printf() on closed filehandle %s 3128 3129(W closed) The filehandle you're writing to got itself closed sometime 3130before now. Check your control flow. 3131 3132=item print() on closed filehandle %s 3133 3134(W closed) The filehandle you're printing on got itself closed sometime 3135before now. Check your control flow. 3136 3137=item Process terminated by SIG%s 3138 3139(W) This is a standard message issued by OS/2 applications, while *nix 3140applications die in silence. It is considered a feature of the OS/2 3141port. One can easily disable this by appropriate sighandlers, see 3142L<perlipc/"Signals">. See also "Process terminated by SIGTERM/SIGINT" 3143in L<perlos2>. 3144 3145=item Prototype mismatch: %s vs %s 3146 3147(S prototype) The subroutine being declared or defined had previously been 3148declared or defined with a different function prototype. 3149 3150=item Prototype not terminated 3151 3152(F) You've omitted the closing parenthesis in a function prototype 3153definition. 3154 3155=item Pseudo-hashes are deprecated 3156 3157(D deprecated) Pseudo-hashes were deprecated in Perl 5.8.0 and they 3158will be removed in Perl 5.10.0, see L<perl58delta> for more details. 3159You can continue to use the C<fields> pragma. 3160 3161=item Quantifier follows nothing in regex; marked by <-- HERE in m/%s/ 3162 3163(F) You started a regular expression with a quantifier. Backslash it if you 3164meant it literally. The <-- HERE shows in the regular expression about 3165where the problem was discovered. See L<perlre>. 3166 3167=item Quantifier in {,} bigger than %d in regex; marked by <-- HERE in m/%s/ 3168 3169(F) There is currently a limit to the size of the min and max values of the 3170{min,max} construct. The <-- HERE shows in the regular expression about where 3171the problem was discovered. See L<perlre>. 3172 3173=item Quantifier unexpected on zero-length expression; marked by <-- HERE in m/%s/ 3174 3175(W regexp) You applied a regular expression quantifier in a place where 3176it makes no sense, such as on a zero-width assertion. Try putting the 3177quantifier inside the assertion instead. For example, the way to match 3178"abc" provided that it is followed by three repetitions of "xyz" is 3179C</abc(?=(?:xyz){3})/>, not C</abc(?=xyz){3}/>. 3180 3181The <-- HERE shows in the regular expression about where the problem was 3182discovered. 3183 3184=item Range iterator outside integer range 3185 3186(F) One (or both) of the numeric arguments to the range operator ".." 3187are outside the range which can be represented by integers internally. 3188One possible workaround is to force Perl to use magical string increment 3189by prepending "0" to your numbers. 3190 3191=item readline() on closed filehandle %s 3192 3193(W closed) The filehandle you're reading from got itself closed sometime 3194before now. Check your control flow. 3195 3196=item read() on closed filehandle %s 3197 3198(W closed) You tried to read from a closed filehandle. 3199 3200=item read() on unopened filehandle %s 3201 3202(W unopened) You tried to read from a filehandle that was never opened. 3203 3204=item Reallocation too large: %lx 3205 3206(F) You can't allocate more than 64K on an MS-DOS machine. 3207 3208=item realloc() of freed memory ignored 3209 3210(S malloc) An internal routine called realloc() on something that had 3211already been freed. 3212 3213=item Recompile perl with B<-D>DEBUGGING to use B<-D> switch 3214 3215(F debugging) You can't use the B<-D> option unless the code to produce 3216the desired output is compiled into Perl, which entails some overhead, 3217which is why it's currently left out of your copy. 3218 3219=item Recursive inheritance detected in package '%s' 3220 3221(F) More than 100 levels of inheritance were used. Probably indicates 3222an unintended loop in your inheritance hierarchy. 3223 3224=item Recursive inheritance detected while looking for method %s 3225 3226(F) More than 100 levels of inheritance were encountered while invoking 3227a method. Probably indicates an unintended loop in your inheritance 3228hierarchy. 3229 3230=item Reference found where even-sized list expected 3231 3232(W misc) You gave a single reference where Perl was expecting a list 3233with an even number of elements (for assignment to a hash). This usually 3234means that you used the anon hash constructor when you meant to use 3235parens. In any case, a hash requires key/value B<pairs>. 3236 3237 %hash = { one => 1, two => 2, }; # WRONG 3238 %hash = [ qw/ an anon array / ]; # WRONG 3239 %hash = ( one => 1, two => 2, ); # right 3240 %hash = qw( one 1 two 2 ); # also fine 3241 3242=item Reference is already weak 3243 3244(W misc) You have attempted to weaken a reference that is already weak. 3245Doing so has no effect. 3246 3247=item Reference miscount in sv_replace() 3248 3249(W internal) The internal sv_replace() function was handed a new SV with 3250a reference count of other than 1. 3251 3252=item Reference to nonexistent group in regex; marked by <-- HERE in m/%s/ 3253 3254(F) You used something like C<\7> in your regular expression, but there are 3255not at least seven sets of capturing parentheses in the expression. If you 3256wanted to have the character with value 7 inserted into the regular expression, 3257prepend a zero to make the number at least two digits: C<\07> 3258 3259The <-- HERE shows in the regular expression about where the problem was 3260discovered. 3261 3262=item regexp memory corruption 3263 3264(P) The regular expression engine got confused by what the regular 3265expression compiler gave it. 3266 3267=item Regexp out of space 3268 3269(P) A "can't happen" error, because safemalloc() should have caught it 3270earlier. 3271 3272=item Repeated format line will never terminate (~~ and @# incompatible) 3273 3274(F) Your format contains the ~~ repeat-until-blank sequence and a 3275numeric field that will never go blank so that the repetition never 3276terminates. You might use ^# instead. See L<perlform>. 3277 3278=item Reversed %s= operator 3279 3280(W syntax) You wrote your assignment operator backwards. The = must 3281always comes last, to avoid ambiguity with subsequent unary operators. 3282 3283=item Runaway format 3284 3285(F) Your format contained the ~~ repeat-until-blank sequence, but it 3286produced 200 lines at once, and the 200th line looked exactly like the 3287199th line. Apparently you didn't arrange for the arguments to exhaust 3288themselves, either by using ^ instead of @ (for scalar variables), or by 3289shifting or popping (for array variables). See L<perlform>. 3290 3291=item Scalars leaked: %d 3292 3293(P) Something went wrong in Perl's internal bookkeeping of scalars: 3294not all scalar variables were deallocated by the time Perl exited. 3295What this usually indicates is a memory leak, which is of course bad, 3296especially if the Perl program is intended to be long-running. 3297 3298=item Scalar value @%s[%s] better written as $%s[%s] 3299 3300(W syntax) You've used an array slice (indicated by @) to select a 3301single element of an array. Generally it's better to ask for a scalar 3302value (indicated by $). The difference is that C<$foo[&bar]> always 3303behaves like a scalar, both when assigning to it and when evaluating its 3304argument, while C<@foo[&bar]> behaves like a list when you assign to it, 3305and provides a list context to its subscript, which can do weird things 3306if you're expecting only one subscript. 3307 3308On the other hand, if you were actually hoping to treat the array 3309element as a list, you need to look into how references work, because 3310Perl will not magically convert between scalars and lists for you. See 3311L<perlref>. 3312 3313=item Scalar value @%s{%s} better written as $%s{%s} 3314 3315(W syntax) You've used a hash slice (indicated by @) to select a single 3316element of a hash. Generally it's better to ask for a scalar value 3317(indicated by $). The difference is that C<$foo{&bar}> always behaves 3318like a scalar, both when assigning to it and when evaluating its 3319argument, while C<@foo{&bar}> behaves like a list when you assign to it, 3320and provides a list context to its subscript, which can do weird things 3321if you're expecting only one subscript. 3322 3323On the other hand, if you were actually hoping to treat the hash element 3324as a list, you need to look into how references work, because Perl will 3325not magically convert between scalars and lists for you. See 3326L<perlref>. 3327 3328=item Script is not setuid/setgid in suidperl 3329 3330(F) Oddly, the suidperl program was invoked on a script without a setuid 3331or setgid bit set. This doesn't make much sense. 3332 3333=item Search pattern not terminated 3334 3335(F) The lexer couldn't find the final delimiter of a // or m{} 3336construct. Remember that bracketing delimiters count nesting level. 3337Missing the leading C<$> from a variable C<$m> may cause this error. 3338 3339Note that since Perl 5.9.0 a // can also be the I<defined-or> 3340construct, not just the empty search pattern. Therefore code written 3341in Perl 5.9.0 or later that uses the // as the I<defined-or> can be 3342misparsed by pre-5.9.0 Perls as a non-terminated search pattern. 3343 3344=item Search pattern not terminated or ternary operator parsed as search pattern 3345 3346(F) The lexer couldn't find the final delimiter of a C<?PATTERN?> 3347construct. 3348 3349The question mark is also used as part of the ternary operator (as in 3350C<foo ? 0 : 1>) leading to some ambiguous constructions being wrongly 3351parsed. One way to disambiguate the parsing is to put parentheses around 3352the conditional expression, i.e. C<(foo) ? 0 : 1>. 3353 3354=item %sseek() on unopened filehandle 3355 3356(W unopened) You tried to use the seek() or sysseek() function on a 3357filehandle that was either never opened or has since been closed. 3358 3359=item select not implemented 3360 3361(F) This machine doesn't implement the select() system call. 3362 3363=item Self-ties of arrays and hashes are not supported 3364 3365(F) Self-ties are of arrays and hashes are not supported in 3366the current implementation. 3367 3368=item Semicolon seems to be missing 3369 3370(W semicolon) A nearby syntax error was probably caused by a missing 3371semicolon, or possibly some other missing operator, such as a comma. 3372 3373=item semi-panic: attempt to dup freed string 3374 3375(S internal) The internal newSVsv() routine was called to duplicate a 3376scalar that had previously been marked as free. 3377 3378=item sem%s not implemented 3379 3380(F) You don't have System V semaphore IPC on your system. 3381 3382=item send() on closed socket %s 3383 3384(W closed) The socket you're sending to got itself closed sometime 3385before now. Check your control flow. 3386 3387=item Sequence (? incomplete in regex; marked by <-- HERE in m/%s/ 3388 3389(F) A regular expression ended with an incomplete extension (?. The <-- HERE 3390shows in the regular expression about where the problem was discovered. See 3391L<perlre>. 3392 3393=item Sequence (?%s...) not implemented in regex; marked by <-- HERE in m/%s/ 3394 3395(F) A proposed regular expression extension has the character reserved but 3396has not yet been written. The <-- HERE shows in the regular expression about 3397where the problem was discovered. See L<perlre>. 3398 3399=item Sequence (?%s...) not recognized in regex; marked by <-- HERE in m/%s/ 3400 3401(F) You used a regular expression extension that doesn't make sense. The 3402<-- HERE shows in the regular expression about where the problem was 3403discovered. See L<perlre>. 3404 3405=item Sequence (?#... not terminated in regex; marked by <-- HERE in m/%s/ 3406 3407(F) A regular expression comment must be terminated by a closing 3408parenthesis. Embedded parentheses aren't allowed. The <-- HERE shows in 3409the regular expression about where the problem was discovered. See 3410L<perlre>. 3411 3412=item Sequence (?{...}) not terminated or not {}-balanced in regex; marked by <-- HERE in m/%s/ 3413 3414(F) If the contents of a (?{...}) clause contains braces, they must balance 3415for Perl to properly detect the end of the clause. The <-- HERE shows in 3416the regular expression about where the problem was discovered. See 3417L<perlre>. 3418 3419=item 500 Server error 3420 3421See Server error. 3422 3423=item Server error 3424 3425This is the error message generally seen in a browser window when trying 3426to run a CGI program (including SSI) over the web. The actual error text 3427varies widely from server to server. The most frequently-seen variants 3428are "500 Server error", "Method (something) not permitted", "Document 3429contains no data", "Premature end of script headers", and "Did not 3430produce a valid header". 3431 3432B<This is a CGI error, not a Perl error>. 3433 3434You need to make sure your script is executable, is accessible by the 3435user CGI is running the script under (which is probably not the user 3436account you tested it under), does not rely on any environment variables 3437(like PATH) from the user it isn't running under, and isn't in a 3438location where the CGI server can't find it, basically, more or less. 3439Please see the following for more information: 3440 3441 http://www.perl.org/CGI_MetaFAQ.html 3442 http://www.htmlhelp.org/faq/cgifaq.html 3443 http://www.w3.org/Security/Faq/ 3444 3445You should also look at L<perlfaq9>. 3446 3447=item setegid() not implemented 3448 3449(F) You tried to assign to C<$)>, and your operating system doesn't 3450support the setegid() system call (or equivalent), or at least Configure 3451didn't think so. 3452 3453=item seteuid() not implemented 3454 3455(F) You tried to assign to C<< $> >>, and your operating system doesn't 3456support the seteuid() system call (or equivalent), or at least Configure 3457didn't think so. 3458 3459=item setpgrp can't take arguments 3460 3461(F) Your system has the setpgrp() from BSD 4.2, which takes no 3462arguments, unlike POSIX setpgid(), which takes a process ID and process 3463group ID. 3464 3465=item setrgid() not implemented 3466 3467(F) You tried to assign to C<$(>, and your operating system doesn't 3468support the setrgid() system call (or equivalent), or at least Configure 3469didn't think so. 3470 3471=item setruid() not implemented 3472 3473(F) You tried to assign to C<$<>, and your operating system doesn't 3474support the setruid() system call (or equivalent), or at least Configure 3475didn't think so. 3476 3477=item setsockopt() on closed socket %s 3478 3479(W closed) You tried to set a socket option on a closed socket. Did you 3480forget to check the return value of your socket() call? See 3481L<perlfunc/setsockopt>. 3482 3483=item Setuid/gid script is writable by world 3484 3485(F) The setuid emulator won't run a script that is writable by the 3486world, because the world might have written on it already. 3487 3488=item Setuid script not plain file 3489 3490(F) The setuid emulator won't run a script that isn't read from a file, 3491but from a socket, a pipe or another device. 3492 3493=item shm%s not implemented 3494 3495(F) You don't have System V shared memory IPC on your system. 3496 3497=item <> should be quotes 3498 3499(F) You wrote C<< require <file> >> when you should have written 3500C<require 'file'>. 3501 3502=item /%s/ should probably be written as "%s" 3503 3504(W syntax) You have used a pattern where Perl expected to find a string, 3505as in the first argument to C<join>. Perl will treat the true or false 3506result of matching the pattern against $_ as the string, which is 3507probably not what you had in mind. 3508 3509=item shutdown() on closed socket %s 3510 3511(W closed) You tried to do a shutdown on a closed socket. Seems a bit 3512superfluous. 3513 3514=item SIG%s handler "%s" not defined 3515 3516(W signal) The signal handler named in %SIG doesn't, in fact, exist. 3517Perhaps you put it into the wrong package? 3518 3519=item sort is now a reserved word 3520 3521(F) An ancient error message that almost nobody ever runs into anymore. 3522But before sort was a keyword, people sometimes used it as a filehandle. 3523 3524=item Sort subroutine didn't return a numeric value 3525 3526(F) A sort comparison routine must return a number. You probably blew 3527it by not using C<< <=> >> or C<cmp>, or by not using them correctly. 3528See L<perlfunc/sort>. 3529 3530=item Sort subroutine didn't return single value 3531 3532(F) A sort comparison subroutine may not return a list value with more 3533or less than one element. See L<perlfunc/sort>. 3534 3535=item splice() offset past end of array 3536 3537(W misc) You attempted to specify an offset that was past the end of 3538the array passed to splice(). Splicing will instead commence at the end 3539of the array, rather than past it. If this isn't what you want, try 3540explicitly pre-extending the array by assigning $#array = $offset. See 3541L<perlfunc/splice>. 3542 3543=item Split loop 3544 3545(P) The split was looping infinitely. (Obviously, a split shouldn't 3546iterate more times than there are characters of input, which is what 3547happened.) See L<perlfunc/split>. 3548 3549=item Statement unlikely to be reached 3550 3551(W exec) You did an exec() with some statement after it other than a 3552die(). This is almost always an error, because exec() never returns 3553unless there was a failure. You probably wanted to use system() 3554instead, which does return. To suppress this warning, put the exec() in 3555a block by itself. 3556 3557=item stat() on unopened filehandle %s 3558 3559(W unopened) You tried to use the stat() function on a filehandle that 3560was either never opened or has since been closed. 3561 3562=item Stub found while resolving method "%s" overloading "%s" 3563 3564(P) Overloading resolution over @ISA tree may be broken by importation 3565stubs. Stubs should never be implicitly created, but explicit calls to 3566C<can> may break this. 3567 3568=item Subroutine %s redefined 3569 3570(W redefine) You redefined a subroutine. To suppress this warning, say 3571 3572 { 3573 no warnings 'redefine'; 3574 eval "sub name { ... }"; 3575 } 3576 3577=item Substitution loop 3578 3579(P) The substitution was looping infinitely. (Obviously, a substitution 3580shouldn't iterate more times than there are characters of input, which 3581is what happened.) See the discussion of substitution in 3582L<perlop/"Quote and Quote-like Operators">. 3583 3584=item Substitution pattern not terminated 3585 3586(F) The lexer couldn't find the interior delimiter of an s/// or s{}{} 3587construct. Remember that bracketing delimiters count nesting level. 3588Missing the leading C<$> from variable C<$s> may cause this error. 3589 3590=item Substitution replacement not terminated 3591 3592(F) The lexer couldn't find the final delimiter of an s/// or s{}{} 3593construct. Remember that bracketing delimiters count nesting level. 3594Missing the leading C<$> from variable C<$s> may cause this error. 3595 3596=item substr outside of string 3597 3598(W substr),(F) You tried to reference a substr() that pointed outside of 3599a string. That is, the absolute value of the offset was larger than the 3600length of the string. See L<perlfunc/substr>. This warning is fatal if 3601substr is used in an lvalue context (as the left hand side of an 3602assignment or as a subroutine argument for example). 3603 3604=item suidperl is no longer needed since %s 3605 3606(F) Your Perl was compiled with B<-D>SETUID_SCRIPTS_ARE_SECURE_NOW, but 3607a version of the setuid emulator somehow got run anyway. 3608 3609=item Switch (?(condition)... contains too many branches in regex; marked by <-- HERE in m/%s/ 3610 3611(F) A (?(condition)if-clause|else-clause) construct can have at most two 3612branches (the if-clause and the else-clause). If you want one or both to 3613contain alternation, such as using C<this|that|other>, enclose it in 3614clustering parentheses: 3615 3616 (?(condition)(?:this|that|other)|else-clause) 3617 3618The <-- HERE shows in the regular expression about where the problem was 3619discovered. See L<perlre>. 3620 3621=item Switch condition not recognized in regex; marked by <-- HERE in m/%s/ 3622 3623(F) If the argument to the (?(...)if-clause|else-clause) construct is a 3624number, it can be only a number. The <-- HERE shows in the regular expression 3625about where the problem was discovered. See L<perlre>. 3626 3627=item switching effective %s is not implemented 3628 3629(F) While under the C<use filetest> pragma, we cannot switch the real 3630and effective uids or gids. 3631 3632=item %s syntax 3633 3634(F) The final summary message when a C<perl -c> succeeds. 3635 3636=item syntax error 3637 3638(F) Probably means you had a syntax error. Common reasons include: 3639 3640 A keyword is misspelled. 3641 A semicolon is missing. 3642 A comma is missing. 3643 An opening or closing parenthesis is missing. 3644 An opening or closing brace is missing. 3645 A closing quote is missing. 3646 3647Often there will be another error message associated with the syntax 3648error giving more information. (Sometimes it helps to turn on B<-w>.) 3649The error message itself often tells you where it was in the line when 3650it decided to give up. Sometimes the actual error is several tokens 3651before this, because Perl is good at understanding random input. 3652Occasionally the line number may be misleading, and once in a blue moon 3653the only way to figure out what's triggering the error is to call 3654C<perl -c> repeatedly, chopping away half the program each time to see 3655if the error went away. Sort of the cybernetic version of S<20 3656questions>. 3657 3658=item syntax error at line %d: `%s' unexpected 3659 3660(A) You've accidentally run your script through the Bourne shell instead 3661of Perl. Check the #! line, or manually feed your script into Perl 3662yourself. 3663 3664=item syntax error in file %s at line %d, next 2 tokens "%s" 3665 3666(F) This error is likely to occur if you run a perl5 script through 3667a perl4 interpreter, especially if the next 2 tokens are "use strict" 3668or "my $var" or "our $var". 3669 3670=item sysread() on closed filehandle %s 3671 3672(W closed) You tried to read from a closed filehandle. 3673 3674=item sysread() on unopened filehandle %s 3675 3676(W unopened) You tried to read from a filehandle that was never opened. 3677 3678=item System V %s is not implemented on this machine 3679 3680(F) You tried to do something with a function beginning with "sem", 3681"shm", or "msg" but that System V IPC is not implemented in your 3682machine. In some machines the functionality can exist but be 3683unconfigured. Consult your system support. 3684 3685=item syswrite() on closed filehandle %s 3686 3687(W closed) The filehandle you're writing to got itself closed sometime 3688before now. Check your control flow. 3689 3690=item C<-T> and C<-B> not implemented on filehandles 3691 3692(F) Perl can't peek at the stdio buffer of filehandles when it doesn't 3693know about your kind of stdio. You'll have to use a filename instead. 3694 3695=item Target of goto is too deeply nested 3696 3697(F) You tried to use C<goto> to reach a label that was too deeply nested 3698for Perl to reach. Perl is doing you a favor by refusing. 3699 3700=item tell() on unopened filehandle 3701 3702(W unopened) You tried to use the tell() function on a filehandle that 3703was either never opened or has since been closed. 3704 3705=item That use of $[ is unsupported 3706 3707(F) Assignment to C<$[> is now strictly circumscribed, and interpreted 3708as a compiler directive. You may say only one of 3709 3710 $[ = 0; 3711 $[ = 1; 3712 ... 3713 local $[ = 0; 3714 local $[ = 1; 3715 ... 3716 3717This is to prevent the problem of one module changing the array base out 3718from under another module inadvertently. See L<perlvar/$[>. 3719 3720=item The crypt() function is unimplemented due to excessive paranoia 3721 3722(F) Configure couldn't find the crypt() function on your machine, 3723probably because your vendor didn't supply it, probably because they 3724think the U.S. Government thinks it's a secret, or at least that they 3725will continue to pretend that it is. And if you quote me on that, I 3726will deny it. 3727 3728=item The %s function is unimplemented 3729 3730The function indicated isn't implemented on this architecture, according 3731to the probings of Configure. 3732 3733=item The stat preceding %s wasn't an lstat 3734 3735(F) It makes no sense to test the current stat buffer for symbolic 3736linkhood if the last stat that wrote to the stat buffer already went 3737past the symlink to get to the real file. Use an actual filename 3738instead. 3739 3740=item The 'unique' attribute may only be applied to 'our' variables 3741 3742(F) Currently this attribute is not supported on C<my> or C<sub> 3743declarations. See L<perlfunc/our>. 3744 3745=item This Perl can't reset CRTL environ elements (%s) 3746 3747=item This Perl can't set CRTL environ elements (%s=%s) 3748 3749(W internal) Warnings peculiar to VMS. You tried to change or delete an 3750element of the CRTL's internal environ array, but your copy of Perl 3751wasn't built with a CRTL that contained the setenv() function. You'll 3752need to rebuild Perl with a CRTL that does, or redefine 3753F<PERL_ENV_TABLES> (see L<perlvms>) so that the environ array isn't the 3754target of the change to 3755%ENV which produced the warning. 3756 3757=item thread failed to start: %s 3758 3759(W threads)(S) The entry point function of threads->create() failed for some reason. 3760 3761=item 5.005 threads are deprecated 3762 3763(D deprecated) The 5.005-style threads (activated by C<use Thread;>) 3764are deprecated and one should use the new ithreads instead, 3765see L<perl58delta> for more details. 3766 3767=item times not implemented 3768 3769(F) Your version of the C library apparently doesn't do times(). I 3770suspect you're not running on Unix. 3771 3772=item "-T" is on the #! line, it must also be used on the command line 3773 3774(X) The #! line (or local equivalent) in a Perl script contains the 3775B<-T> option, but Perl was not invoked with B<-T> in its command line. 3776This is an error because, by the time Perl discovers a B<-T> in a 3777script, it's too late to properly taint everything from the environment. 3778So Perl gives up. 3779 3780If the Perl script is being executed as a command using the #! 3781mechanism (or its local equivalent), this error can usually be fixed by 3782editing the #! line so that the B<-T> option is a part of Perl's first 3783argument: e.g. change C<perl -n -T> to C<perl -T -n>. 3784 3785If the Perl script is being executed as C<perl scriptname>, then the 3786B<-T> option must appear on the command line: C<perl -T scriptname>. 3787 3788=item To%s: illegal mapping '%s' 3789 3790(F) You tried to define a customized To-mapping for lc(), lcfirst, 3791uc(), or ucfirst() (or their string-inlined versions), but you 3792specified an illegal mapping. 3793See L<perlunicode/"User-Defined Character Properties">. 3794 3795=item Too deeply nested ()-groups 3796 3797(F) Your template contains ()-groups with a ridiculously deep nesting level. 3798 3799=item Too few args to syscall 3800 3801(F) There has to be at least one argument to syscall() to specify the 3802system call to call, silly dilly. 3803 3804=item Too late for "-%s" option 3805 3806(X) The #! line (or local equivalent) in a Perl script contains the 3807B<-M> or B<-m> option. This is an error because B<-M> and B<-m> options 3808are not intended for use inside scripts. Use the C<use> pragma instead. 3809 3810=item Too late to run %s block 3811 3812(W void) A CHECK or INIT block is being defined during run time proper, 3813when the opportunity to run them has already passed. Perhaps you are 3814loading a file with C<require> or C<do> when you should be using C<use> 3815instead. Or perhaps you should put the C<require> or C<do> inside a 3816BEGIN block. 3817 3818=item Too many args to syscall 3819 3820(F) Perl supports a maximum of only 14 args to syscall(). 3821 3822=item Too many arguments for %s 3823 3824(F) The function requires fewer arguments than you specified. 3825 3826=item Too many )'s 3827 3828(A) You've accidentally run your script through B<csh> instead of Perl. 3829Check the #! line, or manually feed your script into Perl yourself. 3830 3831=item Too many ('s 3832 3833(A) You've accidentally run your script through B<csh> instead of Perl. 3834Check the #! line, or manually feed your script into Perl yourself. 3835 3836=item Trailing \ in regex m/%s/ 3837 3838(F) The regular expression ends with an unbackslashed backslash. 3839Backslash it. See L<perlre>. 3840 3841=item Transliteration pattern not terminated 3842 3843(F) The lexer couldn't find the interior delimiter of a tr/// or tr[][] 3844or y/// or y[][] construct. Missing the leading C<$> from variables 3845C<$tr> or C<$y> may cause this error. 3846 3847=item Transliteration replacement not terminated 3848 3849(F) The lexer couldn't find the final delimiter of a tr///, tr[][], 3850y/// or y[][] construct. 3851 3852=item '%s' trapped by operation mask 3853 3854(F) You tried to use an operator from a Safe compartment in which it's 3855disallowed. See L<Safe>. 3856 3857=item truncate not implemented 3858 3859(F) Your machine doesn't implement a file truncation mechanism that 3860Configure knows about. 3861 3862=item Type of arg %d to %s must be %s (not %s) 3863 3864(F) This function requires the argument in that position to be of a 3865certain type. Arrays must be @NAME or C<@{EXPR}>. Hashes must be 3866%NAME or C<%{EXPR}>. No implicit dereferencing is allowed--use the 3867{EXPR} forms as an explicit dereference. See L<perlref>. 3868 3869=item umask not implemented 3870 3871(F) Your machine doesn't implement the umask function and you tried to 3872use it to restrict permissions for yourself (EXPR & 0700). 3873 3874=item Unable to create sub named "%s" 3875 3876(F) You attempted to create or access a subroutine with an illegal name. 3877 3878=item Unbalanced context: %d more PUSHes than POPs 3879 3880(W internal) The exit code detected an internal inconsistency in how 3881many execution contexts were entered and left. 3882 3883=item Unbalanced saves: %d more saves than restores 3884 3885(W internal) The exit code detected an internal inconsistency in how 3886many values were temporarily localized. 3887 3888=item Unbalanced scopes: %d more ENTERs than LEAVEs 3889 3890(W internal) The exit code detected an internal inconsistency in how 3891many blocks were entered and left. 3892 3893=item Unbalanced tmps: %d more allocs than frees 3894 3895(W internal) The exit code detected an internal inconsistency in how 3896many mortal scalars were allocated and freed. 3897 3898=item Undefined format "%s" called 3899 3900(F) The format indicated doesn't seem to exist. Perhaps it's really in 3901another package? See L<perlform>. 3902 3903=item Undefined sort subroutine "%s" called 3904 3905(F) The sort comparison routine specified doesn't seem to exist. 3906Perhaps it's in a different package? See L<perlfunc/sort>. 3907 3908=item Undefined subroutine &%s called 3909 3910(F) The subroutine indicated hasn't been defined, or if it was, it has 3911since been undefined. 3912 3913=item Undefined subroutine called 3914 3915(F) The anonymous subroutine you're trying to call hasn't been defined, 3916or if it was, it has since been undefined. 3917 3918=item Undefined subroutine in sort 3919 3920(F) The sort comparison routine specified is declared but doesn't seem 3921to have been defined yet. See L<perlfunc/sort>. 3922 3923=item Undefined top format "%s" called 3924 3925(F) The format indicated doesn't seem to exist. Perhaps it's really in 3926another package? See L<perlform>. 3927 3928=item Undefined value assigned to typeglob 3929 3930(W misc) An undefined value was assigned to a typeglob, a la 3931C<*foo = undef>. This does nothing. It's possible that you really mean 3932C<undef *foo>. 3933 3934=item %s: Undefined variable 3935 3936(A) You've accidentally run your script through B<csh> instead of Perl. 3937Check the #! line, or manually feed your script into Perl yourself. 3938 3939=item unexec of %s into %s failed! 3940 3941(F) The unexec() routine failed for some reason. See your local FSF 3942representative, who probably put it there in the first place. 3943 3944=item Unicode character %s is illegal 3945 3946(W utf8) Certain Unicode characters have been designated off-limits by 3947the Unicode standard and should not be generated. If you really know 3948what you are doing you can turn off this warning by C<no warnings 'utf8';>. 3949 3950=item Unknown BYTEORDER 3951 3952(F) There are no byte-swapping functions for a machine with this byte 3953order. 3954 3955=item Unknown open() mode '%s' 3956 3957(F) The second argument of 3-argument open() is not among the list 3958of valid modes: C<< < >>, C<< > >>, C<<< >> >>>, C<< +< >>, 3959C<< +> >>, C<<< +>> >>>, C<-|>, C<|->, C<< <& >>, C<< >& >>. 3960 3961=item Unknown PerlIO layer "%s" 3962 3963(W layer) An attempt was made to push an unknown layer onto the Perl I/O 3964system. (Layers take care of transforming data between external and 3965internal representations.) Note that some layers, such as C<mmap>, 3966are not supported in all environments. If your program didn't 3967explicitly request the failing operation, it may be the result of the 3968value of the environment variable PERLIO. 3969 3970=item Unknown process %x sent message to prime_env_iter: %s 3971 3972(P) An error peculiar to VMS. Perl was reading values for %ENV before 3973iterating over it, and someone else stuck a message in the stream of 3974data Perl expected. Someone's very confused, or perhaps trying to 3975subvert Perl's population of %ENV for nefarious purposes. 3976 3977=item Unknown "re" subpragma '%s' (known ones are: %s) 3978 3979You tried to use an unknown subpragma of the "re" pragma. 3980 3981=item Unknown switch condition (?(%.2s in regex; marked by <-- HERE in m/%s/ 3982 3983(F) The condition part of a (?(condition)if-clause|else-clause) construct 3984is not known. The condition may be lookahead or lookbehind (the condition 3985is true if the lookahead or lookbehind is true), a (?{...}) construct (the 3986condition is true if the code evaluates to a true value), or a number (the 3987condition is true if the set of capturing parentheses named by the number 3988matched). 3989 3990The <-- HERE shows in the regular expression about where the problem was 3991discovered. See L<perlre>. 3992 3993=item Unknown Unicode option letter '%c' 3994 3995You specified an unknown Unicode option. See L<perlrun> documentation 3996of the C<-C> switch for the list of known options. 3997 3998=item Unknown Unicode option value %x 3999 4000You specified an unknown Unicode option. See L<perlrun> documentation 4001of the C<-C> switch for the list of known options. 4002 4003=item Unknown warnings category '%s' 4004 4005(F) An error issued by the C<warnings> pragma. You specified a warnings 4006category that is unknown to perl at this point. 4007 4008Note that if you want to enable a warnings category registered by a module 4009(e.g. C<use warnings 'File::Find'>), you must have imported this module 4010first. 4011 4012=item unmatched [ in regex; marked by <-- HERE in m/%s/ 4013 4014(F) The brackets around a character class must match. If you wish to 4015include a closing bracket in a character class, backslash it or put it 4016first. The <-- HERE shows in the regular expression about where the problem 4017was discovered. See L<perlre>. 4018 4019=item unmatched ( in regex; marked by <-- HERE in m/%s/ 4020 4021(F) Unbackslashed parentheses must always be balanced in regular 4022expressions. If you're a vi user, the % key is valuable for finding the 4023matching parenthesis. The <-- HERE shows in the regular expression about 4024where the problem was discovered. See L<perlre>. 4025 4026=item Unmatched right %s bracket 4027 4028(F) The lexer counted more closing curly or square brackets than opening 4029ones, so you're probably missing a matching opening bracket. As a 4030general rule, you'll find the missing one (so to speak) near the place 4031you were last editing. 4032 4033=item Unquoted string "%s" may clash with future reserved word 4034 4035(W reserved) You used a bareword that might someday be claimed as a 4036reserved word. It's best to put such a word in quotes, or capitalize it 4037somehow, or insert an underbar into it. You might also declare it as a 4038subroutine. 4039 4040=item Unrecognized character %s 4041 4042(F) The Perl parser has no idea what to do with the specified character 4043in your Perl script (or eval). Perhaps you tried to run a compressed 4044script, a binary program, or a directory as a Perl program. 4045 4046=item /%s/: Unrecognized escape \\%c in character class passed through 4047 4048(W regexp) You used a backslash-character combination which is not 4049recognized by Perl inside character classes. The character was 4050understood literally. 4051 4052=item Unrecognized escape \\%c passed through 4053 4054(W misc) You used a backslash-character combination which is not 4055recognized by Perl. 4056 4057=item Unrecognized escape \\%c passed through in regex; marked by <-- HERE in m/%s/ 4058 4059(W regexp) You used a backslash-character combination which is not 4060recognized by Perl. This combination appears in an interpolated variable or 4061a C<'>-delimited regular expression. The character was understood 4062literally. The <-- HERE shows in the regular expression about where the 4063escape was discovered. 4064 4065=item Unrecognized signal name "%s" 4066 4067(F) You specified a signal name to the kill() function that was not 4068recognized. Say C<kill -l> in your shell to see the valid signal names 4069on your system. 4070 4071=item Unrecognized switch: -%s (-h will show valid options) 4072 4073(F) You specified an illegal option to Perl. Don't do that. (If you 4074think you didn't do that, check the #! line to see if it's supplying the 4075bad switch on your behalf.) 4076 4077=item Unsuccessful %s on filename containing newline 4078 4079(W newline) A file operation was attempted on a filename, and that 4080operation failed, PROBABLY because the filename contained a newline, 4081PROBABLY because you forgot to chomp() it off. See L<perlfunc/chomp>. 4082 4083=item Unsupported directory function "%s" called 4084 4085(F) Your machine doesn't support opendir() and readdir(). 4086 4087=item Unsupported function %s 4088 4089(F) This machine doesn't implement the indicated function, apparently. 4090At least, Configure doesn't think so. 4091 4092=item Unsupported function fork 4093 4094(F) Your version of executable does not support forking. 4095 4096Note that under some systems, like OS/2, there may be different flavors 4097of Perl executables, some of which may support fork, some not. Try 4098changing the name you call Perl by to C<perl_>, C<perl__>, and so on. 4099 4100=item Unsupported script encoding %s 4101 4102(F) Your program file begins with a Unicode Byte Order Mark (BOM) which 4103declares it to be in a Unicode encoding that Perl cannot read. 4104 4105=item Unsupported socket function "%s" called 4106 4107(F) Your machine doesn't support the Berkeley socket mechanism, or at 4108least that's what Configure thought. 4109 4110=item Unterminated attribute list 4111 4112(F) The lexer found something other than a simple identifier at the 4113start of an attribute, and it wasn't a semicolon or the start of a 4114block. Perhaps you terminated the parameter list of the previous 4115attribute too soon. See L<attributes>. 4116 4117=item Unterminated attribute parameter in attribute list 4118 4119(F) The lexer saw an opening (left) parenthesis character while parsing 4120an attribute list, but the matching closing (right) parenthesis 4121character was not found. You may need to add (or remove) a backslash 4122character to get your parentheses to balance. See L<attributes>. 4123 4124=item Unterminated compressed integer 4125 4126(F) An argument to unpack("w",...) was incompatible with the BER 4127compressed integer format and could not be converted to an integer. 4128See L<perlfunc/pack>. 4129 4130=item Unterminated <> operator 4131 4132(F) The lexer saw a left angle bracket in a place where it was expecting 4133a term, so it's looking for the corresponding right angle bracket, and 4134not finding it. Chances are you left some needed parentheses out 4135earlier in the line, and you really meant a "less than". 4136 4137=item untie attempted while %d inner references still exist 4138 4139(W untie) A copy of the object returned from C<tie> (or C<tied>) was 4140still valid when C<untie> was called. 4141 4142=item Usage: POSIX::%s(%s) 4143 4144(F) You called a POSIX function with incorrect arguments. 4145See L<POSIX/FUNCTIONS> for more information. 4146 4147=item Usage: Win32::%s(%s) 4148 4149(F) You called a Win32 function with incorrect arguments. 4150See L<Win32> for more information. 4151 4152=item Useless (?-%s) - don't use /%s modifier in regex; marked by <-- HERE in m/%s/ 4153 4154(W regexp) You have used an internal modifier such as (?-o) that has no 4155meaning unless removed from the entire regexp: 4156 4157 if ($string =~ /(?-o)$pattern/o) { ... } 4158 4159must be written as 4160 4161 if ($string =~ /$pattern/) { ... } 4162 4163The <-- HERE shows in the regular expression about 4164where the problem was discovered. See L<perlre>. 4165 4166=item Useless (?%s) - use /%s modifier in regex; marked by <-- HERE in m/%s/ 4167 4168(W regexp) You have used an internal modifier such as (?o) that has no 4169meaning unless applied to the entire regexp: 4170 4171 if ($string =~ /(?o)$pattern/) { ... } 4172 4173must be written as 4174 4175 if ($string =~ /$pattern/o) { ... } 4176 4177The <-- HERE shows in the regular expression about 4178where the problem was discovered. See L<perlre>. 4179 4180=item Useless use of %s in void context 4181 4182(W void) You did something without a side effect in a context that does 4183nothing with the return value, such as a statement that doesn't return a 4184value from a block, or the left side of a scalar comma operator. Very 4185often this points not to stupidity on your part, but a failure of Perl 4186to parse your program the way you thought it would. For example, you'd 4187get this if you mixed up your C precedence with Python precedence and 4188said 4189 4190 $one, $two = 1, 2; 4191 4192when you meant to say 4193 4194 ($one, $two) = (1, 2); 4195 4196Another common error is to use ordinary parentheses to construct a list 4197reference when you should be using square or curly brackets, for 4198example, if you say 4199 4200 $array = (1,2); 4201 4202when you should have said 4203 4204 $array = [1,2]; 4205 4206The square brackets explicitly turn a list value into a scalar value, 4207while parentheses do not. So when a parenthesized list is evaluated in 4208a scalar context, the comma is treated like C's comma operator, which 4209throws away the left argument, which is not what you want. See 4210L<perlref> for more on this. 4211 4212This warning will not be issued for numerical constants equal to 0 or 1 4213since they are often used in statements like 4214 4215 1 while sub_with_side_effects(); 4216 4217String constants that would normally evaluate to 0 or 1 are warned 4218about. 4219 4220=item Useless use of "re" pragma 4221 4222(W) You did C<use re;> without any arguments. That isn't very useful. 4223 4224=item Useless use of sort in scalar context 4225 4226(W void) You used sort in scalar context, as in : 4227 4228 my $x = sort @y; 4229 4230This is not very useful, and perl currently optimizes this away. 4231 4232=item Useless use of %s with no values 4233 4234(W syntax) You used the push() or unshift() function with no arguments 4235apart from the array, like C<push(@x)> or C<unshift(@foo)>. That won't 4236usually have any effect on the array, so is completely useless. It's 4237possible in principle that push(@tied_array) could have some effect 4238if the array is tied to a class which implements a PUSH method. If so, 4239you can write it as C<push(@tied_array,())> to avoid this warning. 4240 4241=item "use" not allowed in expression 4242 4243(F) The "use" keyword is recognized and executed at compile time, and 4244returns no useful value. See L<perlmod>. 4245 4246=item Use of bare << to mean <<"" is deprecated 4247 4248(D deprecated) You are now encouraged to use the explicitly quoted form 4249if you wish to use an empty line as the terminator of the here-document. 4250 4251=item Use of chdir('') or chdir(undef) as chdir() deprecated 4252 4253(D deprecated) chdir() with no arguments is documented to change to 4254$ENV{HOME} or $ENV{LOGDIR}. chdir(undef) and chdir('') share this 4255behavior, but that has been deprecated. In future versions they 4256will simply fail. 4257 4258Be careful to check that what you pass to chdir() is defined and not 4259blank, else you might find yourself in your home directory. 4260 4261=item Use of /c modifier is meaningless in s/// 4262 4263(W regexp) You used the /c modifier in a substitution. The /c 4264modifier is not presently meaningful in substitutions. 4265 4266=item Use of /c modifier is meaningless without /g 4267 4268(W regexp) You used the /c modifier with a regex operand, but didn't 4269use the /g modifier. Currently, /c is meaningful only when /g is 4270used. (This may change in the future.) 4271 4272=item Use of freed value in iteration 4273 4274(F) Perhaps you modified the iterated array within the loop? 4275This error is typically caused by code like the following: 4276 4277 @a = (3,4); 4278 @a = () for (1,2,@a); 4279 4280You are not supposed to modify arrays while they are being iterated over. 4281For speed and efficiency reasons, Perl internally does not do full 4282reference-counting of iterated items, hence deleting such an item in the 4283middle of an iteration causes Perl to see a freed value. 4284 4285=item Use of *glob{FILEHANDLE} is deprecated 4286 4287(D deprecated) You are now encouraged to use the shorter *glob{IO} form 4288to access the filehandle slot within a typeglob. 4289 4290=item Use of /g modifier is meaningless in split 4291 4292(W regexp) You used the /g modifier on the pattern for a C<split> 4293operator. Since C<split> always tries to match the pattern 4294repeatedly, the C</g> has no effect. 4295 4296=item Use of implicit split to @_ is deprecated 4297 4298(D deprecated) It makes a lot of work for the compiler when you clobber 4299a subroutine's argument list, so it's better if you assign the results 4300of a split() explicitly to an array (or list). 4301 4302=item Use of inherited AUTOLOAD for non-method %s() is deprecated 4303 4304(D deprecated) As an (ahem) accidental feature, C<AUTOLOAD> subroutines 4305are looked up as methods (using the C<@ISA> hierarchy) even when the 4306subroutines to be autoloaded were called as plain functions (e.g. 4307C<Foo::bar()>), not as methods (e.g. C<< Foo->bar() >> or C<< 4308$obj->bar() >>). 4309 4310This bug will be rectified in future by using method lookup only for 4311methods' C<AUTOLOAD>s. However, there is a significant base of existing 4312code that may be using the old behavior. So, as an interim step, Perl 4313currently issues an optional warning when non-methods use inherited 4314C<AUTOLOAD>s. 4315 4316The simple rule is: Inheritance will not work when autoloading 4317non-methods. The simple fix for old code is: In any module that used 4318to depend on inheriting C<AUTOLOAD> for non-methods from a base class 4319named C<BaseClass>, execute C<*AUTOLOAD = \&BaseClass::AUTOLOAD> during 4320startup. 4321 4322In code that currently says C<use AutoLoader; @ISA = qw(AutoLoader);> 4323you should remove AutoLoader from @ISA and change C<use AutoLoader;> to 4324C<use AutoLoader 'AUTOLOAD';>. 4325 4326=item Use of %s in printf format not supported 4327 4328(F) You attempted to use a feature of printf that is accessible from 4329only C. This usually means there's a better way to do it in Perl. 4330 4331=item Use of $* is deprecated 4332 4333(D deprecated) This variable magically turned on multi-line pattern 4334matching, both for you and for any luckless subroutine that you happen 4335to call. You should use the new C<//m> and C<//s> modifiers now to do 4336that without the dangerous action-at-a-distance effects of C<$*>. 4337 4338=item Use of $# is deprecated 4339 4340(D deprecated) This was an ill-advised attempt to emulate a poorly 4341defined B<awk> feature. Use an explicit printf() or sprintf() instead. 4342 4343=item Use of %s is deprecated 4344 4345(D deprecated) The construct indicated is no longer recommended for use, 4346generally because there's a better way to do it, and also because the 4347old way has bad side effects. 4348 4349=item Use of -l on filehandle %s 4350 4351(W io) A filehandle represents an opened file, and when you opened the file 4352it already went past any symlink you are presumably trying to look for. 4353The operation returned C<undef>. Use a filename instead. 4354 4355=item Use of "package" with no arguments is deprecated 4356 4357(D deprecated) You used the C<package> keyword without specifying a package 4358name. So no namespace is current at all. Using this can cause many 4359otherwise reasonable constructs to fail in baffling ways. C<use strict;> 4360instead. 4361 4362=item Use of reference "%s" as array index 4363 4364(W misc) You tried to use a reference as an array index; this probably 4365isn't what you mean, because references in numerical context tend 4366to be huge numbers, and so usually indicates programmer error. 4367 4368If you really do mean it, explicitly numify your reference, like so: 4369C<$array[0+$ref]>. This warning is not given for overloaded objects, 4370either, because you can overload the numification and stringification 4371operators and then you assumedly know what you are doing. 4372 4373=item Use of reserved word "%s" is deprecated 4374 4375(D deprecated) The indicated bareword is a reserved word. Future 4376versions of perl may use it as a keyword, so you're better off either 4377explicitly quoting the word in a manner appropriate for its context of 4378use, or using a different name altogether. The warning can be 4379suppressed for subroutine names by either adding a C<&> prefix, or using 4380a package qualifier, e.g. C<&our()>, or C<Foo::our()>. 4381 4382=item Use of tainted arguments in %s is deprecated 4383 4384(W taint, deprecated) You have supplied C<system()> or C<exec()> with multiple 4385arguments and at least one of them is tainted. This used to be allowed 4386but will become a fatal error in a future version of perl. Untaint your 4387arguments. See L<perlsec>. 4388 4389=item Use of uninitialized value%s 4390 4391(W uninitialized) An undefined value was used as if it were already 4392defined. It was interpreted as a "" or a 0, but maybe it was a mistake. 4393To suppress this warning assign a defined value to your variables. 4394 4395To help you figure out what was undefined, perl tells you what operation 4396you used the undefined value in. Note, however, that perl optimizes your 4397program and the operation displayed in the warning may not necessarily 4398appear literally in your program. For example, C<"that $foo"> is 4399usually optimized into C<"that " . $foo>, and the warning will refer to 4400the C<concatenation (.)> operator, even though there is no C<.> in your 4401program. 4402 4403=item Using a hash as a reference is deprecated 4404 4405(D deprecated) You tried to use a hash as a reference, as in 4406C<< %foo->{"bar"} >> or C<< %$ref->{"hello"} >>. Versions of perl <= 5.6.1 4407used to allow this syntax, but shouldn't have. It is now deprecated, and will 4408be removed in a future version. 4409 4410=item Using an array as a reference is deprecated 4411 4412(D deprecated) You tried to use an array as a reference, as in 4413C<< @foo->[23] >> or C<< @$ref->[99] >>. Versions of perl <= 5.6.1 used to 4414allow this syntax, but shouldn't have. It is now deprecated, and will be 4415removed in a future version. 4416 4417=item UTF-16 surrogate %s 4418 4419(W utf8) You tried to generate half of an UTF-16 surrogate by 4420requesting a Unicode character between the code points 0xD800 and 44210xDFFF (inclusive). That range is reserved exclusively for the use of 4422UTF-16 encoding (by having two 16-bit UCS-2 characters); but Perl 4423encodes its characters in UTF-8, so what you got is a very illegal 4424character. If you really know what you are doing you can turn off 4425this warning by C<no warnings 'utf8';>. 4426 4427=item Value of %s can be "0"; test with defined() 4428 4429(W misc) In a conditional expression, you used <HANDLE>, <*> (glob), 4430C<each()>, or C<readdir()> as a boolean value. Each of these constructs 4431can return a value of "0"; that would make the conditional expression 4432false, which is probably not what you intended. When using these 4433constructs in conditional expressions, test their values with the 4434C<defined> operator. 4435 4436=item Value of CLI symbol "%s" too long 4437 4438(W misc) A warning peculiar to VMS. Perl tried to read the value of an 4439%ENV element from a CLI symbol table, and found a resultant string 4440longer than 1024 characters. The return value has been truncated to 44411024 characters. 4442 4443=item Variable "%s" is not imported%s 4444 4445(F) While "use strict" in effect, you referred to a global variable that 4446you apparently thought was imported from another module, because 4447something else of the same name (usually a subroutine) is exported by 4448that module. It usually means you put the wrong funny character on the 4449front of your variable. 4450 4451=item Variable length lookbehind not implemented in regex; marked by <-- HERE in m/%s/ 4452 4453(F) Lookbehind is allowed only for subexpressions whose length is fixed and 4454known at compile time. The <-- HERE shows in the regular expression about 4455where the problem was discovered. See L<perlre>. 4456 4457=item "%s" variable %s masks earlier declaration in same %s 4458 4459(W misc) A "my" or "our" variable has been redeclared in the current 4460scope or statement, effectively eliminating all access to the previous 4461instance. This is almost always a typographical error. Note that the 4462earlier variable will still exist until the end of the scope or until 4463all closure referents to it are destroyed. 4464 4465=item Variable "%s" may be unavailable 4466 4467(W closure) An inner (nested) I<anonymous> subroutine is inside a 4468I<named> subroutine, and outside that is another subroutine; and the 4469anonymous (innermost) subroutine is referencing a lexical variable 4470defined in the outermost subroutine. For example: 4471 4472 sub outermost { my $a; sub middle { sub { $a } } } 4473 4474If the anonymous subroutine is called or referenced (directly or 4475indirectly) from the outermost subroutine, it will share the variable as 4476you would expect. But if the anonymous subroutine is called or 4477referenced when the outermost subroutine is not active, it will see the 4478value of the shared variable as it was before and during the *first* 4479call to the outermost subroutine, which is probably not what you want. 4480 4481In these circumstances, it is usually best to make the middle subroutine 4482anonymous, using the C<sub {}> syntax. Perl has specific support for 4483shared variables in nested anonymous subroutines; a named subroutine in 4484between interferes with this feature. 4485 4486=item Variable syntax 4487 4488(A) You've accidentally run your script through B<csh> instead 4489of Perl. Check the #! line, or manually feed your script into 4490Perl yourself. 4491 4492=item Variable "%s" will not stay shared 4493 4494(W closure) An inner (nested) I<named> subroutine is referencing a 4495lexical variable defined in an outer subroutine. 4496 4497When the inner subroutine is called, it will probably see the value of 4498the outer subroutine's variable as it was before and during the *first* 4499call to the outer subroutine; in this case, after the first call to the 4500outer subroutine is complete, the inner and outer subroutines will no 4501longer share a common value for the variable. In other words, the 4502variable will no longer be shared. 4503 4504Furthermore, if the outer subroutine is anonymous and references a 4505lexical variable outside itself, then the outer and inner subroutines 4506will I<never> share the given variable. 4507 4508This problem can usually be solved by making the inner subroutine 4509anonymous, using the C<sub {}> syntax. When inner anonymous subs that 4510reference variables in outer subroutines are called or referenced, they 4511are automatically rebound to the current values of such variables. 4512 4513=item Version number must be a constant number 4514 4515(P) The attempt to translate a C<use Module n.n LIST> statement into 4516its equivalent C<BEGIN> block found an internal inconsistency with 4517the version number. 4518 4519=item Warning: something's wrong 4520 4521(W) You passed warn() an empty string (the equivalent of C<warn "">) or 4522you called it with no args and C<$_> was empty. 4523 4524=item Warning: unable to close filehandle %s properly 4525 4526(S) The implicit close() done by an open() got an error indication on 4527the close(). This usually indicates your file system ran out of disk 4528space. 4529 4530=item Warning: Use of "%s" without parentheses is ambiguous 4531 4532(S ambiguous) You wrote a unary operator followed by something that 4533looks like a binary operator that could also have been interpreted as a 4534term or unary operator. For instance, if you know that the rand 4535function has a default argument of 1.0, and you write 4536 4537 rand + 5; 4538 4539you may THINK you wrote the same thing as 4540 4541 rand() + 5; 4542 4543but in actual fact, you got 4544 4545 rand(+5); 4546 4547So put in parentheses to say what you really mean. 4548 4549=item Wide character in %s 4550 4551(W utf8) Perl met a wide character (>255) when it wasn't expecting 4552one. This warning is by default on for I/O (like print). The easiest 4553way to quiet this warning is simply to add the C<:utf8> layer to the 4554output, e.g. C<binmode STDOUT, ':utf8'>. Another way to turn off the 4555warning is to add C<no warnings 'utf8';> but that is often closer to 4556cheating. In general, you are supposed to explicitly mark the 4557filehandle with an encoding, see L<open> and L<perlfunc/binmode>. 4558 4559=item Within []-length '%c' not allowed 4560 4561(F) The count in the (un)pack template may be replaced by C<[TEMPLATE]> only if 4562C<TEMPLATE> always matches the same amount of packed bytes that can be 4563determined from the template alone. This is not possible if it contains an 4564of the codes @, /, U, u, w or a *-length. Redesign the template. 4565 4566=item write() on closed filehandle %s 4567 4568(W closed) The filehandle you're writing to got itself closed sometime 4569before now. Check your control flow. 4570 4571=item %s "\x%s" does not map to Unicode 4572 4573When reading in different encodings Perl tries to map everything 4574into Unicode characters. The bytes you read in are not legal in 4575this encoding, for example 4576 4577 utf8 "\xE4" does not map to Unicode 4578 4579if you try to read in the a-diaereses Latin-1 as UTF-8. 4580 4581=item 'X' outside of string 4582 4583(F) You had a (un)pack template that specified a relative position before 4584the beginning of the string being (un)packed. See L<perlfunc/pack>. 4585 4586=item 'x' outside of string in unpack 4587 4588(F) You had a pack template that specified a relative position after 4589the end of the string being unpacked. See L<perlfunc/pack>. 4590 4591=item YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET! 4592 4593(F) And you probably never will, because you probably don't have the 4594sources to your kernel, and your vendor probably doesn't give a rip 4595about what you want. Your best bet is to put a setuid C wrapper around 4596your script. 4597 4598=item You need to quote "%s" 4599 4600(W syntax) You assigned a bareword as a signal handler name. 4601Unfortunately, you already have a subroutine of that name declared, 4602which means that Perl 5 will try to call the subroutine when the 4603assignment is executed, which is probably not what you want. (If it IS 4604what you want, put an & in front.) 4605 4606=item Your random numbers are not that random 4607 4608(F) When trying to initialise the random seed for hashes, Perl could 4609not get any randomness out of your system. This usually indicates 4610Something Very Wrong. 4611 4612=back 4613 4614=cut 4615