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