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