This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: "Too late for -T" could be more descriptive
[perl5.git] / pod / perldiag.pod
CommitLineData
a0d0e21e
LW
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).
e476b1b5 12 (S) A severe warning (default).
a0d0e21e
LW
13 (F) A fatal error (trappable).
14 (P) An internal error you should never see (trappable).
54310121 15 (X) A very fatal error (nontrappable).
cb1a09d0 16 (A) An alien error message (not generated by Perl).
a0d0e21e 17
75b44862 18The majority of messages from the first three classifications above
64977eb6 19(W, D & S) can be controlled using the C<warnings> pragma.
e476b1b5
GS
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.
4438c4b7 32
748a9306 33Trappable errors may be trapped using the eval operator. See
4438c4b7
JH
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>.
a0d0e21e 37
6df41af2
GS
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.
a0d0e21e
LW
44
45=over 4
46
6df41af2 47=item accept() on closed socket %s
33633739 48
be771a83
GS
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>.
33633739 52
6df41af2 53=item Allocation too large: %lx
a0d0e21e 54
6df41af2 55(X) You can't allocate more than 64K on an MS-DOS machine.
a0d0e21e 56
1109a392 57=item '%c' allowed only after types %s
ef54e1a4 58
1109a392
MHM
59(F) The modifiers '!', '<' and '>' are allowed in pack() or unpack() only
60after certain types. See L<perlfunc/pack>.
ef54e1a4 61
6df41af2 62=item Ambiguous call resolved as CORE::%s(), qualify as such or use &
43192e07 63
75b44862 64(W ambiguous) A subroutine you have declared has the same name as a Perl
be771a83
GS
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.
43192e07 68
6df41af2
GS
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).
43192e07 73
6df41af2 74To silently interpret it as the Perl operator, use the C<CORE::> prefix
496a33f5 75on the operator (e.g. C<CORE::log($x)>) or declare the subroutine
be771a83
GS
76to be an object method (see L<perlsub/"Subroutine Attributes"> or
77L<attributes>).
43192e07 78
c2e66d9e
GS
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
6df41af2 86=item Ambiguous use of %s resolved as %s
43192e07 87
6df41af2
GS
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.
a0d0e21e 91
6df41af2 92=item '|' and '<' may not both be specified on command line
a0d0e21e 93
be771a83
GS
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.
c9f97d15 97
6df41af2 98=item '|' and '>' may not both be specified on command line
1028017a 99
be771a83
GS
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
1028017a 105
6df41af2
GS
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;
c9f97d15 112
6df41af2 113=item Applying %s to %s will act on scalar(%s)
eb6e2d6f 114
496a33f5
SC
115(W misc) The pattern match (C<//>), substitution (C<s///>), and
116transliteration (C<tr///>) operators work on scalar values. If you apply
be771a83
GS
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.
eb6e2d6f 122
6df41af2 123=item Args must match #! line
a0d0e21e 124
6df41af2
GS
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>.
a0d0e21e 129
6df41af2 130=item Arg too short for msgsnd
76cd736e 131
6df41af2 132(F) msgsnd() requires a string at least as long as sizeof(long).
76cd736e 133
8ea97a1e 134=item %s argument is not a HASH or ARRAY element
a0d0e21e 135
8ea97a1e 136(F) The argument to exists() must be a hash or array element, such as:
a0d0e21e
LW
137
138 $foo{$bar}
cb4f522a 139 $ref->{"susie"}[12]
a0d0e21e 140
8ea97a1e 141=item %s argument is not a HASH or ARRAY element or slice
5f05dabc 142
be771a83
GS
143(F) The argument to delete() must be either a hash or array element,
144such as:
5f05dabc
PP
145
146 $foo{$bar}
cb4f522a 147 $ref->{"susie"}[12]
5f05dabc 148
8ea97a1e 149or a hash or array slice, such as:
5f05dabc 150
6df41af2
GS
151 @foo[$bar, $baz, $xyzzy]
152 @{$ref->[12]}{"susie", "queue"}
5315574d 153
6df41af2 154=item %s argument is not a subroutine name
a0d0e21e 155
6df41af2 156(F) The argument to exists() for C<exists &sub> must be a subroutine
be771a83
GS
157name, and not a subroutine call. C<exists &sub()> will generate this
158error.
a0d0e21e 159
f86702cc 160=item Argument "%s" isn't numeric%s
a0d0e21e 161
be771a83
GS
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.
a0d0e21e 165
b4581f09
JH
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
a0d0e21e
LW
175=item Array @%s missing the @ in argument %d of %s()
176
75b44862
GS
177(D deprecated) Really old Perl let you omit the @ on array names in some
178spots. This is now heavily deprecated.
a0d0e21e
LW
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
96ebfdd7
RK
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
2393f1b9 202=item Attempt to access disallowed key '%s' in a restricted hash
1b1f1335 203
49293501 204(F) The failing code has attempted to get or set a key which is not in
2393f1b9 205the current set of allowed keys of a restricted hash.
49293501 206
81689caa
HS
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
96ebfdd7
RK
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
a0d0e21e
LW
235=item Attempt to free non-arena SV: 0x%lx
236
be771a83
GS
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.
a0d0e21e 240
54310121 241=item Attempt to free nonexistent shared string
bbce6d69 242
be771a83
GS
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.
bbce6d69 247
a0d0e21e
LW
248=item Attempt to free temp prematurely
249
be771a83
GS
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.
a0d0e21e
LW
255
256=item Attempt to free unreferenced glob pointers
257
e476b1b5 258(P internal) The reference counts got screwed up on symbol aliases.
a0d0e21e
LW
259
260=item Attempt to free unreferenced scalar
261
be771a83
GS
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.
a0d0e21e 269
dcdda58d
GS
270=item Attempt to join self
271
272(F) You tried to join a thread from within itself, which is an
be771a83
GS
273impossible task. You may be joining the wrong thread, or you may need
274to move the join() to some other thread.
dcdda58d 275
84902520
TB
276=item Attempt to pack pointer to temporary value
277
be771a83
GS
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.
84902520 284
b7a902f4
PP
285=item Attempt to use reference as lvalue in substr
286
be771a83
GS
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>.
b7a902f4 290
dc26df50 291=item Bad arg length for %s, is %d, should be %s
a0d0e21e 292
be771a83
GS
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,
5f05dabc 295S<sizeof(struct msqid_ds *)>, S<sizeof(struct semid_ds *)>, and
a0d0e21e
LW
296S<sizeof(struct shmid_ds *)>.
297
7a95317d
GS
298=item Bad evalled substitution pattern
299
496a33f5 300(F) You've used the C</e> switch to evaluate the replacement for a
7a95317d
GS
301substitution, but perl found a syntax error in the code to evaluate,
302most likely an unexpected right brace '}'.
303
a0d0e21e
LW
304=item Bad filehandle: %s
305
be771a83
GS
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.
a0d0e21e
LW
309
310=item Bad free() ignored
311
be771a83
GS
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
9ea8bc6d 314setting environment variable C<PERL_BADFREE> to 0.
33c8a3fe 315
9ea8bc6d 316This message can be seen quite often with DB_File on systems with "hard"
be771a83
GS
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().
a0d0e21e 319
aa689395
PP
320=item Bad hash
321
322(P) One of the internal hash routines was passed a null HV pointer.
323
6df41af2
GS
324=item Badly placed ()'s
325
326(A) You've accidentally run your script through B<csh> instead
327of Perl. Check the #! line, or manually feed your script into
328Perl yourself.
329
a0d0e21e
LW
330=item Bad name after %s::
331
be771a83
GS
332(F) You started to name a symbol by using a package prefix, and then
333didn't finish the symbol. In particular, you can't interpolate outside
334of quotes, so
a0d0e21e
LW
335
336 $var = 'myvar';
337 $sym = mypack::$var;
338
339is not the same as
340
341 $var = 'myvar';
342 $sym = "mypack::$var";
343
4ad56ec9
IZ
344=item Bad realloc() ignored
345
be771a83
GS
346(S malloc) An internal routine called realloc() on something that had
347never been malloc()ed in the first place. Mandatory, but can be disabled
348by setting environment variable C<PERL_BADFREE> to 1.
4ad56ec9 349
a0d0e21e
LW
350=item Bad symbol for array
351
352(P) An internal request asked to add an array entry to something that
353wasn't a symbol table entry.
354
355=item Bad symbol for filehandle
356
be771a83
GS
357(P) An internal request asked to add a filehandle entry to something
358that wasn't a symbol table entry.
a0d0e21e
LW
359
360=item Bad symbol for hash
361
362(P) An internal request asked to add a hash entry to something that
363wasn't a symbol table entry.
364
34d09196
GS
365=item Bareword found in conditional
366
be771a83
GS
367(W bareword) The compiler found a bareword where it expected a
368conditional, which often indicates that an || or && was parsed as part
369of the last argument of the previous construct, for example:
34d09196
GS
370
371 open FOO || die;
372
be771a83
GS
373It may also indicate a misspelled constant that has been interpreted as
374a bareword:
34d09196
GS
375
376 use constant TYPO => 1;
377 if (TYOP) { print "foo" }
378
379The C<strict> pragma is useful in avoiding such errors.
380
6df41af2
GS
381=item Bareword "%s" not allowed while "strict subs" in use
382
383(F) With "strict subs" in use, a bareword is only allowed as a
be771a83
GS
384subroutine identifier, in curly brackets or to the left of the "=>"
385symbol. Perhaps you need to predeclare a subroutine?
6df41af2
GS
386
387=item Bareword "%s" refers to nonexistent package
388
be771a83
GS
389(W bareword) You used a qualified bareword of the form C<Foo::>, but the
390compiler saw no other uses of that namespace before that point. Perhaps
391you need to predeclare a package?
6df41af2 392
a0d0e21e
LW
393=item BEGIN failed--compilation aborted
394
be771a83
GS
395(F) An untrapped exception was raised while executing a BEGIN
396subroutine. Compilation stops immediately and the interpreter is
397exited.
a0d0e21e 398
68dc0745
PP
399=item BEGIN not safe after errors--compilation aborted
400
401(F) Perl found a C<BEGIN {}> subroutine (or a C<use> directive, which
be771a83
GS
402implies a C<BEGIN {}>) after one or more compilation errors had already
403occurred. Since the intended environment for the C<BEGIN {}> could not
404be guaranteed (due to the errors), and since subsequent code likely
405depends on its correct operation, Perl just gave up.
68dc0745 406
6df41af2
GS
407=item \1 better written as $1
408
be771a83
GS
409(W syntax) Outside of patterns, backreferences live on as variables.
410The use of backslashes is grandfathered on the right-hand side of a
411substitution, but stylistically it's better to use the variable form
412because other Perl programmers will expect it, and it works better if
413there are more than 9 backreferences.
6df41af2 414
252aa082
JH
415=item Binary number > 0b11111111111111111111111111111111 non-portable
416
e476b1b5 417(W portable) The binary number you specified is larger than 2**32-1
9e24b6e2
JH
418(4294967295) and therefore non-portable between systems. See
419L<perlport> for more on portability concerns.
252aa082 420
69282e91 421=item bind() on closed socket %s
a0d0e21e 422
be771a83
GS
423(W closed) You tried to do a bind on a closed socket. Did you forget to
424check the return value of your socket() call? See L<perlfunc/bind>.
a0d0e21e 425
c289d2f7
JH
426=item binmode() on closed filehandle %s
427
428(W unopened) You tried binmode() on a filehandle that was never opened.
429Check you control flow and number of arguments.
430
c5a0f51a
JH
431=item Bit vector size > 32 non-portable
432
e476b1b5 433(W portable) Using bit vector sizes larger than 32 is non-portable.
c5a0f51a 434
4633a7c4
LW
435=item Bizarre copy of %s in %s
436
be771a83 437(P) Perl detected an attempt to copy an internal value that is not
b45f050a 438copyable.
4633a7c4 439
f675dbe5
CB
440=item Buffer overflow in prime_env_iter: %s
441
be771a83
GS
442(W internal) A warning peculiar to VMS. While Perl was preparing to
443iterate over %ENV, it encountered a logical name or symbol definition
444which was too long, so it was truncated to the string shown.
f675dbe5 445
a0d0e21e
LW
446=item Callback called exit
447
4929bf7b 448(F) A subroutine invoked from an external package via call_sv()
a0d0e21e
LW
449exited by calling exit.
450
6df41af2 451=item %s() called too early to check prototype
f675dbe5 452
be771a83
GS
453(W prototype) You've called a function that has a prototype before the
454parser saw a definition or declaration for it, and Perl could not check
455that the call conforms to the prototype. You need to either add an
456early prototype declaration for the subroutine in question, or move the
457subroutine definition ahead of the call to get proper prototype
458checking. Alternatively, if you are certain that you're calling the
459function correctly, you may put an ampersand before the name to avoid
460the warning. See L<perlsub>.
f675dbe5 461
49704364 462=item Cannot compress integer in pack
0258719b
NC
463
464(F) An argument to pack("w",...) was too large to compress. The BER
465compressed integer format can only be used with positive integers, and you
466attempted to compress Infinity or a very large number (> 1e308).
467See L<perlfunc/pack>.
468
49704364 469=item Cannot compress negative numbers in pack
0258719b
NC
470
471(F) An argument to pack("w",...) was negative. The BER compressed integer
472format can only be used with positive integers. See L<perlfunc/pack>.
473
96ebfdd7
RK
474=item Can only compress unsigned integers in pack
475
476(F) An argument to pack("w",...) was not an integer. The BER compressed
477integer format can only be used with positive integers, and you attempted
478to compress something else. See L<perlfunc/pack>.
479
a0d0e21e
LW
480=item Can't bless non-reference value
481
482(F) Only hard references may be blessed. This is how Perl "enforces"
483encapsulation of objects. See L<perlobj>.
484
a0d0e21e
LW
485=item Can't call method "%s" in empty package "%s"
486
487(F) You called a method correctly, and it correctly indicated a package
488functioning as a class, but that package doesn't have ANYTHING defined
489in it, let alone methods. See L<perlobj>.
490
6df41af2
GS
491=item Can't call method "%s" on an undefined value
492
493(F) You used the syntax of a method call, but the slot filled by the
be771a83
GS
494object reference or package name contains an undefined value. Something
495like this will reproduce the error:
6df41af2
GS
496
497 $BADREF = undef;
498 process $BADREF 1,2,3;
499 $BADREF->process(1,2,3);
500
a0d0e21e
LW
501=item Can't call method "%s" on unblessed reference
502
54310121 503(F) A method call must know in what package it's supposed to run. It
be771a83
GS
504ordinarily finds this out from the object reference you supply, but you
505didn't supply an object reference in this case. A reference isn't an
506object reference until it has been blessed. See L<perlobj>.
a0d0e21e
LW
507
508=item Can't call method "%s" without a package or object reference
509
510(F) You used the syntax of a method call, but the slot filled by the
be771a83
GS
511object reference or package name contains an expression that returns a
512defined value which is neither an object reference nor a package name.
72b5445b
GS
513Something like this will reproduce the error:
514
515 $BADREF = 42;
516 process $BADREF 1,2,3;
517 $BADREF->process(1,2,3);
518
a0d0e21e
LW
519=item Can't chdir to %s
520
521(F) You called C<perl -x/foo/bar>, but C</foo/bar> is not a directory
522that you can chdir to, possibly because it doesn't exist.
523
0545a864 524=item Can't check filesystem of script "%s" for nosuid
104d25b7 525
be771a83
GS
526(P) For some reason you can't check the filesystem of the script for
527nosuid.
104d25b7 528
6df41af2
GS
529=item Can't coerce array into hash
530
531(F) You used an array where a hash was expected, but the array has no
532information on how to map from keys to array indices. You can do that
533only with arrays that have a hash reference at index 0.
534
a0d0e21e
LW
535=item Can't coerce %s to integer in %s
536
537(F) Certain types of SVs, in particular real symbol table entries
55497cff 538(typeglobs), can't be forced to stop being what they are. So you can't
a0d0e21e
LW
539say things like:
540
541 *foo += 1;
542
543You CAN say
544
545 $foo = *foo;
546 $foo += 1;
547
548but then $foo no longer contains a glob.
549
550=item Can't coerce %s to number in %s
551
552(F) Certain types of SVs, in particular real symbol table entries
55497cff 553(typeglobs), can't be forced to stop being what they are.
a0d0e21e
LW
554
555=item Can't coerce %s to string in %s
556
557(F) Certain types of SVs, in particular real symbol table entries
55497cff 558(typeglobs), can't be forced to stop being what they are.
a0d0e21e
LW
559
560=item Can't create pipe mailbox
561
be771a83
GS
562(P) An error peculiar to VMS. The process is suffering from exhausted
563quotas or other plumbing problems.
a0d0e21e 564
eb64745e 565=item Can't declare class for non-scalar %s in "%s"
a0d0e21e 566
2f7e735d
AMS
567(F) Currently, only scalar variables can be declared with a specific
568class qualifier in a "my" or "our" declaration. The semantics may be
569extended for other types of variables in future.
eb64745e
GS
570
571=item Can't declare %s in "%s"
572
573(F) Only scalar, array, and hash variables may be declared as "my" or
574"our" variables. They must have ordinary identifiers as names.
a0d0e21e 575
6df41af2
GS
576=item Can't do inplace edit: %s is not a regular file
577
be771a83
GS
578(S inplace) You tried to use the B<-i> switch on a special file, such as
579a file in /dev, or a FIFO. The file was ignored.
6df41af2 580
a0d0e21e
LW
581=item Can't do inplace edit on %s: %s
582
be771a83
GS
583(S inplace) The creation of the new file failed for the indicated
584reason.
a0d0e21e 585
54310121 586=item Can't do inplace edit without backup
a0d0e21e 587
be771a83
GS
588(F) You're on a system such as MS-DOS that gets confused if you try
589reading from a deleted (but still opened) file. You have to say
590C<-i.bak>, or some such.
a0d0e21e 591
10f9c03d 592=item Can't do inplace edit: %s would not be unique
a0d0e21e 593
e476b1b5 594(S inplace) Your filesystem does not support filenames longer than 14
10f9c03d
CK
595characters and Perl was unable to create a unique filename during
596inplace editing with the B<-i> switch. The file was ignored.
a0d0e21e 597
7253e4e3 598=item Can't do {n,m} with n > m in regex; marked by <-- HERE in m/%s/
a0d0e21e 599
b45f050a 600(F) Minima must be less than or equal to maxima. If you really want your
7253e4e3 601regexp to match something 0 times, just put {0}. The <-- HERE shows in the
b45f050a 602regular expression about where the problem was discovered. See L<perlre>.
a0d0e21e
LW
603
604=item Can't do setegid!
605
be771a83
GS
606(P) The setegid() call failed for some reason in the setuid emulator of
607suidperl.
a0d0e21e
LW
608
609=item Can't do seteuid!
610
611(P) The setuid emulator of suidperl failed for some reason.
612
613=item Can't do setuid
614
be771a83
GS
615(F) This typically means that ordinary perl tried to exec suidperl to do
616setuid emulation, but couldn't exec it. It looks for a name of the form
617sperl5.000 in the same directory that the perl executable resides under
618the name perl5.000, typically /usr/local/bin on Unix machines. If the
619file is there, check the execute permissions. If it isn't, ask your
620sysadmin why he and/or she removed it.
a0d0e21e
LW
621
622=item Can't do waitpid with flags
623
be771a83
GS
624(F) This machine doesn't have either waitpid() or wait4(), so only
625waitpid() without flags is emulated.
a0d0e21e 626
a0d0e21e
LW
627=item Can't emulate -%s on #! line
628
be771a83
GS
629(F) The #! line specifies a switch that doesn't make sense at this
630point. For example, it'd be kind of silly to put a B<-x> on the #!
631line.
a0d0e21e 632
1109a392
MHM
633=item Can't %s %s-endian %ss on this platform
634
635(F) Your platform's byte-order is neither big-endian nor little-endian,
636or it has a very strange pointer size. Packing and unpacking big- or
637little-endian floating point values and pointers may not be possible.
638See L<perlfunc/pack>.
639
a0d0e21e
LW
640=item Can't exec "%s": %s
641
d1be9408 642(W exec) A system(), exec(), or piped open call could not execute the
be771a83
GS
643named program for the indicated reason. Typical reasons include: the
644permissions were wrong on the file, the file wasn't found in
645C<$ENV{PATH}>, the executable in question was compiled for another
646architecture, or the #! line in a script points to an interpreter that
647can't be run for similar reasons. (Or maybe your system doesn't support
648#! at all.)
a0d0e21e
LW
649
650=item Can't exec %s
651
be771a83
GS
652(F) Perl was trying to execute the indicated program for you because
653that's what the #! line said. If that's not what you wanted, you may
654need to mention "perl" on the #! line somewhere.
a0d0e21e
LW
655
656=item Can't execute %s
657
be771a83
GS
658(F) You used the B<-S> switch, but the copies of the script to execute
659found in the PATH did not have correct permissions.
2a92aaa0 660
6df41af2 661=item Can't find an opnumber for "%s"
2a92aaa0 662
be771a83
GS
663(F) A string of a form C<CORE::word> was given to prototype(), but there
664is no builtin with the name C<word>.
6df41af2 665
56ca2fc0
JH
666=item Can't find %s character property "%s"
667
668(F) You used C<\p{}> or C<\P{}> but the character property by that name
89d60977 669could not be found. Maybe you misspelled the name of the property
56ca2fc0
JH
670(remember that the names of character properties consist only of
671alphanumeric characters), or maybe you forgot the C<Is> or C<In> prefix?
672
6df41af2
GS
673=item Can't find label %s
674
be771a83
GS
675(F) You said to goto a label that isn't mentioned anywhere that it's
676possible for us to go to. See L<perlfunc/goto>.
2a92aaa0
GS
677
678=item Can't find %s on PATH
679
be771a83
GS
680(F) You used the B<-S> switch, but the script to execute could not be
681found in the PATH.
a0d0e21e 682
6df41af2 683=item Can't find %s on PATH, '.' not in PATH
a0d0e21e 684
be771a83
GS
685(F) You used the B<-S> switch, but the script to execute could not be
686found in the PATH, or at least not with the correct permissions. The
687script exists in the current directory, but PATH prohibits running it.
a0d0e21e 688
96ebfdd7
RK
689=item Can't find %s property definition %s
690
691(F) You may have tried to use C<\p> which means a Unicode property (for
692example C<\p{Lu}> is all uppercase letters). If you did mean to use a
693Unicode property, see L<perlunicode> for the list of known properties.
694If you didn't mean to use a Unicode property, escape the C<\p>, either
695by C<\\p> (just the C<\p>) or by C<\Q\p> (the rest of the string, until
696possible C<\E>).
697
a0d0e21e
LW
698=item Can't find string terminator %s anywhere before EOF
699
be771a83
GS
700(F) Perl strings can stretch over multiple lines. This message means
701that the closing delimiter was omitted. Because bracketed quotes count
702nesting levels, the following is missing its final parenthesis:
a0d0e21e 703
fb73857a
PP
704 print q(The character '(' starts a side comment.);
705
be771a83
GS
706If you're getting this error from a here-document, you may have included
707unseen whitespace before or after your closing tag. A good programmer's
708editor will have a way to help you find these characters.
a0d0e21e
LW
709
710=item Can't fork
711
be771a83
GS
712(F) A fatal error occurred while trying to fork while opening a
713pipeline.
a0d0e21e 714
748a9306
LW
715=item Can't get filespec - stale stat buffer?
716
be771a83
GS
717(S) A warning peculiar to VMS. This arises because of the difference
718between access checks under VMS and under the Unix model Perl assumes.
719Under VMS, access checks are done by filename, rather than by bits in
720the stat buffer, so that ACLs and other protections can be taken into
721account. Unfortunately, Perl assumes that the stat buffer contains all
722the necessary information, and passes it, instead of the filespec, to
723the access checking routine. It will try to retrieve the filespec using
724the device name and FID present in the stat buffer, but this works only
725if you haven't made a subsequent call to the CRTL stat() routine,
726because the device name is overwritten with each call. If this warning
727appears, the name lookup failed, and the access checking routine gave up
728and returned FALSE, just to be conservative. (Note: The access checking
729routine knows about the Perl C<stat> operator and file tests, so you
730shouldn't ever see this warning in response to a Perl command; it arises
731only if some internal code takes stat buffers lightly.)
748a9306 732
a0d0e21e
LW
733=item Can't get pipe mailbox device name
734
be771a83
GS
735(P) An error peculiar to VMS. After creating a mailbox to act as a
736pipe, Perl can't retrieve its name for later use.
a0d0e21e
LW
737
738=item Can't get SYSGEN parameter value for MAXBUF
739
748a9306
LW
740(P) An error peculiar to VMS. Perl asked $GETSYI how big you want your
741mailbox buffers to be, and didn't get an answer.
a0d0e21e 742
6df41af2 743=item Can't "goto" into the middle of a foreach loop
a0d0e21e 744
be771a83
GS
745(F) A "goto" statement was executed to jump into the middle of a foreach
746loop. You can't get there from here. See L<perlfunc/goto>.
6df41af2
GS
747
748=item Can't "goto" out of a pseudo block
749
be771a83
GS
750(F) A "goto" statement was executed to jump out of what might look like
751a block, except that it isn't a proper block. This usually occurs if
752you tried to jump out of a sort() block or subroutine, which is a no-no.
753See L<perlfunc/goto>.
a0d0e21e 754
b150fb22
RH
755=item Can't goto subroutine from an eval-string
756
be771a83
GS
757(F) The "goto subroutine" call can't be used to jump out of an eval
758"string". (You can use it to jump out of an eval {BLOCK}, but you
759probably don't want to.)
b150fb22 760
6df41af2
GS
761=item Can't goto subroutine outside a subroutine
762
be771a83
GS
763(F) The deeply magical "goto subroutine" call can only replace one
764subroutine call for another. It can't manufacture one out of whole
765cloth. In general you should be calling it out of only an AUTOLOAD
766routine anyway. See L<perlfunc/goto>.
6df41af2 767
0b5b802d
GS
768=item Can't ignore signal CHLD, forcing to default
769
be771a83
GS
770(W signal) Perl has detected that it is being run with the SIGCHLD
771signal (sometimes known as SIGCLD) disabled. Since disabling this
772signal will interfere with proper determination of exit status of child
773processes, Perl has reset the signal to its default value. This
774situation typically indicates that the parent program under which Perl
775may be running (e.g. cron) is being very careless.
0b5b802d 776
6df41af2 777=item Can't "last" outside a loop block
4633a7c4 778
6df41af2 779(F) A "last" statement was executed to break out of the current block,
be771a83
GS
780except that there's this itty bitty problem called there isn't a current
781block. Note that an "if" or "else" block doesn't count as a "loopish"
782block, as doesn't a block given to sort(), map() or grep(). You can
783usually double the curlies to get the same effect though, because the
784inner curlies will be considered a block that loops once. See
785L<perlfunc/last>.
4633a7c4 786
b8170e59
JB
787=item Can't load '%s' for module %s
788
789(F) The module you tried to load failed to load a dynamic extension. This
790may either mean that you upgraded your version of perl to one that is
791incompatible with your old dynamic extensions (which is known to happen
792between major versions of perl), or (more likely) that your dynamic
16d98ec5 793extension was built against an older version of the library that is
b8170e59
JB
794installed on your system. You may need to rebuild your old dynamic
795extensions.
796
748a9306
LW
797=item Can't localize lexical variable %s
798
2ba9eb46 799(F) You used local on a variable name that was previously declared as a
748a9306
LW
800lexical variable using "my". This is not allowed. If you want to
801localize a package variable of the same name, qualify it with the
802package name.
803
6df41af2 804=item Can't localize through a reference
4727527e 805
6df41af2
GS
806(F) You said something like C<local $$ref>, which Perl can't currently
807handle, because when it goes to restore the old value of whatever $ref
be771a83 808pointed to after the scope of the local() is finished, it can't be sure
64977eb6 809that $ref will still be a reference.
4727527e 810
ea071790 811=item Can't locate %s
ec889f3a
GS
812
813(F) You said to C<do> (or C<require>, or C<use>) a file that couldn't be
814found. Perl looks for the file in all the locations mentioned in @INC,
be771a83
GS
815unless the file name included the full path to the file. Perhaps you
816need to set the PERL5LIB or PERL5OPT environment variable to say where
817the extra library is, or maybe the script needs to add the library name
818to @INC. Or maybe you just misspelled the name of the file. See
819L<perlfunc/require> and L<lib>.
a0d0e21e 820
6df41af2
GS
821=item Can't locate auto/%s.al in @INC
822
be771a83
GS
823(F) A function (or method) was called in a package which allows
824autoload, but there is no function to autoload. Most probable causes
825are a misprint in a function/method name or a failure to C<AutoSplit>
826the file, say, by doing C<make install>.
6df41af2 827
b8170e59
JB
828=item Can't locate loadable object for module %s in @INC
829
830(F) The module you loaded is trying to load an external library, like
831for example, C<foo.so> or C<bar.dll>, but the L<DynaLoader> module was
832unable to locate this library. See L<DynaLoader>.
833
a0d0e21e
LW
834=item Can't locate object method "%s" via package "%s"
835
836(F) You called a method correctly, and it correctly indicated a package
837functioning as a class, but that package doesn't define that particular
2ba9eb46 838method, nor does any of its base classes. See L<perlobj>.
a0d0e21e
LW
839
840=item Can't locate package %s for @%s::ISA
841
be771a83
GS
842(W syntax) The @ISA array contained the name of another package that
843doesn't seem to exist.
a0d0e21e 844
2f7da168
RK
845=item Can't locate PerlIO%s
846
847(F) You tried to use in open() a PerlIO layer that does not exist,
848e.g. open(FH, ">:nosuchlayer", "somefile").
849
3e3baf6d
TB
850=item Can't make list assignment to \%ENV on this system
851
be771a83
GS
852(F) List assignment to %ENV is not supported on some systems, notably
853VMS.
3e3baf6d 854
a0d0e21e
LW
855=item Can't modify %s in %s
856
be771a83
GS
857(F) You aren't allowed to assign to the item indicated, or otherwise try
858to change it, such as with an auto-increment.
a0d0e21e 859
54310121 860=item Can't modify nonexistent substring
a0d0e21e
LW
861
862(P) The internal routine that does assignment to a substr() was handed
863a NULL.
864
6df41af2
GS
865=item Can't modify non-lvalue subroutine call
866
867(F) Subroutines meant to be used in lvalue context should be declared as
868such, see L<perlsub/"Lvalue subroutines">.
869
5f05dabc 870=item Can't msgrcv to read-only var
a0d0e21e 871
5f05dabc 872(F) The target of a msgrcv must be modifiable to be used as a receive
a0d0e21e
LW
873buffer.
874
6df41af2
GS
875=item Can't "next" outside a loop block
876
877(F) A "next" statement was executed to reiterate the current block, but
878there isn't a current block. Note that an "if" or "else" block doesn't
be771a83
GS
879count as a "loopish" block, as doesn't a block given to sort(), map() or
880grep(). You can usually double the curlies to get the same effect
881though, because the inner curlies will be considered a block that loops
882once. See L<perlfunc/next>.
6df41af2 883
a0d0e21e
LW
884=item Can't open %s: %s
885
c47ff5f1 886(S inplace) The implicit opening of a file through use of the C<< <> >>
08e9d68e
DD
887filehandle, either implicitly under the C<-n> or C<-p> command-line
888switches, or explicitly, failed for the indicated reason. Usually this
be771a83
GS
889is because you don't have read permission for a file which you named on
890the command line.
a0d0e21e 891
9a869a14
RGS
892=item Can't open a reference
893
894(W io) You tried to open a scalar reference for reading or writing,
895using the 3-arg open() syntax :
896
897 open FH, '>', $ref;
898
899but your version of perl is compiled without perlio, and this form of
900open is not supported.
901
a0d0e21e
LW
902=item Can't open bidirectional pipe
903
be771a83
GS
904(W pipe) You tried to say C<open(CMD, "|cmd|")>, which is not supported.
905You can try any of several modules in the Perl library to do this, such
906as IPC::Open2. Alternately, direct the pipe's output to a file using
907">", and then read it in under a different file handle.
a0d0e21e 908
748a9306
LW
909=item Can't open error file %s as stderr
910
be771a83
GS
911(F) An error peculiar to VMS. Perl does its own command line
912redirection, and couldn't open the file specified after '2>' or '2>>' on
913the command line for writing.
748a9306
LW
914
915=item Can't open input file %s as stdin
916
be771a83
GS
917(F) An error peculiar to VMS. Perl does its own command line
918redirection, and couldn't open the file specified after '<' on the
919command line for reading.
748a9306
LW
920
921=item Can't open output file %s as stdout
922
be771a83
GS
923(F) An error peculiar to VMS. Perl does its own command line
924redirection, and couldn't open the file specified after '>' or '>>' on
925the command line for writing.
748a9306
LW
926
927=item Can't open output pipe (name: %s)
928
be771a83
GS
929(P) An error peculiar to VMS. Perl does its own command line
930redirection, and couldn't open the pipe into which to send data destined
931for stdout.
748a9306 932
2b8ca739 933=item Can't open perl script%s
a0d0e21e
LW
934
935(F) The script you specified can't be opened for the indicated reason.
936
fa3aa65a
JC
937If you're debugging a script that uses #!, and normally relies on the
938shell's $PATH search, the -S option causes perl to do that search, so
939you don't have to type the path or C<`which $scriptname`>.
940
6df41af2
GS
941=item Can't read CRTL environ
942
943(S) A warning peculiar to VMS. Perl tried to read an element of %ENV
944from the CRTL's internal environment array and discovered the array was
945missing. You need to figure out where your CRTL misplaced its environ
be771a83
GS
946or define F<PERL_ENV_TABLES> (see L<perlvms>) so that environ is not
947searched.
6df41af2 948
7bac28a0
PP
949=item Can't redefine active sort subroutine %s
950
951(F) Perl optimizes the internal handling of sort subroutines and keeps
be771a83
GS
952pointers into them. You tried to redefine one such sort subroutine when
953it was currently active, which is not allowed. If you really want to do
7bac28a0
PP
954this, you should write C<sort { &func } @x> instead of C<sort func @x>.
955
6df41af2
GS
956=item Can't "redo" outside a loop block
957
958(F) A "redo" statement was executed to restart the current block, but
959there isn't a current block. Note that an "if" or "else" block doesn't
960count as a "loopish" block, as doesn't a block given to sort(), map()
961or grep(). You can usually double the curlies to get the same effect
962though, because the inner curlies will be considered a block that
963loops once. See L<perlfunc/redo>.
964
64977eb6 965=item Can't remove %s: %s, skipping file
10f9c03d 966
be771a83
GS
967(S inplace) You requested an inplace edit without creating a backup
968file. Perl was unable to remove the original file to replace it with
969the modified file. The file was left unmodified.
10f9c03d 970
a0d0e21e
LW
971=item Can't rename %s to %s: %s, skipping file
972
e476b1b5 973(S inplace) The rename done by the B<-i> switch failed for some reason,
10f9c03d 974probably because you don't have write permission to the directory.
a0d0e21e 975
748a9306
LW
976=item Can't reopen input pipe (name: %s) in binary mode
977
be771a83
GS
978(P) An error peculiar to VMS. Perl thought stdin was a pipe, and tried
979to reopen it to accept binary data. Alas, it failed.
748a9306 980
6df41af2
GS
981=item Can't resolve method `%s' overloading `%s' in package `%s'
982
be771a83
GS
983(F|P) Error resolving overloading specified by a method name (as opposed
984to a subroutine reference): no such method callable via the package. If
985method name is C<???>, this is an internal error.
6df41af2 986
a0d0e21e
LW
987=item Can't reswap uid and euid
988
be771a83
GS
989(P) The setreuid() call failed for some reason in the setuid emulator of
990suidperl.
a0d0e21e 991
cd06dffe
GS
992=item Can't return %s from lvalue subroutine
993
be771a83
GS
994(F) Perl detected an attempt to return illegal lvalues (such as
995temporary or readonly values) from a subroutine used as an lvalue. This
996is not allowed.
cd06dffe 997
96ebfdd7
RK
998=item Can't return outside a subroutine
999
1000(F) The return statement was executed in mainline code, that is, where
1001there was no subroutine call to return out of. See L<perlsub>.
1002
78f9721b
SM
1003=item Can't return %s to lvalue scalar context
1004
1005(F) You tried to return a complete array or hash from an lvalue subroutine,
1006but you called the subroutine in a way that made Perl think you meant
1007to return only one value. You probably meant to write parentheses around
1008the call to the subroutine, which tell Perl that the call should be in
1009list context.
1010
a0d0e21e
LW
1011=item Can't stat script "%s"
1012
be771a83
GS
1013(P) For some reason you can't fstat() the script even though you have it
1014open already. Bizarre.
a0d0e21e
LW
1015
1016=item Can't swap uid and euid
1017
be771a83
GS
1018(P) The setreuid() call failed for some reason in the setuid emulator of
1019suidperl.
a0d0e21e
LW
1020
1021=item Can't take log of %g
1022
fb73857a
PP
1023(F) For ordinary real numbers, you can't take the logarithm of a
1024negative number or zero. There's a Math::Complex package that comes
be771a83
GS
1025standard with Perl, though, if you really want to do that for the
1026negative numbers.
a0d0e21e
LW
1027
1028=item Can't take sqrt of %g
1029
1030(F) For ordinary real numbers, you can't take the square root of a
fb73857a
PP
1031negative number. There's a Math::Complex package that comes standard
1032with Perl, though, if you really want to do that.
a0d0e21e
LW
1033
1034=item Can't undef active subroutine
1035
1036(F) You can't undefine a routine that's currently running. You can,
1037however, redefine it while it's running, and you can even undef the
1038redefined subroutine while the old routine is running. Go figure.
1039
1040=item Can't unshift
1041
1042(F) You tried to unshift an "unreal" array that can't be unshifted, such
1043as the main Perl stack.
1044
1045=item Can't upgrade that kind of scalar
1046
be771a83
GS
1047(P) The internal sv_upgrade routine adds "members" to an SV, making it
1048into a more specialized kind of SV. The top several SV types are so
1049specialized, however, that they cannot be interconverted. This message
1050indicates that such a conversion was attempted.
a0d0e21e
LW
1051
1052=item Can't upgrade to undef
1053
be771a83
GS
1054(P) The undefined SV is the bottom of the totem pole, in the scheme of
1055upgradability. Upgrading to undef indicates an error in the code
1056calling sv_upgrade.
a0d0e21e 1057
66c611c5
MHM
1058=item Can't use '%c' in a group with different byte-order in %s
1059
1060(F) You attempted to force a different byte-order on a type
1061that is already inside a group with a byte-order modifier.
1062For example you cannot force little-endianness on a type that
1063is inside a big-endian group.
1064
1db89ea5
BS
1065=item Can't use anonymous symbol table for method lookup
1066
e27ad1f2 1067(F) The internal routine that does method lookup was handed a symbol
1db89ea5
BS
1068table that doesn't have a name. Symbol tables can become anonymous
1069for example by undefining stashes: C<undef %Some::Package::>.
1070
96ebfdd7
RK
1071=item Can't use an undefined value as %s reference
1072
1073(F) A value used as either a hard reference or a symbolic reference must
1074be a defined value. This helps to delurk some insidious errors.
1075
6df41af2
GS
1076=item Can't use bareword ("%s") as %s ref while "strict refs" in use
1077
be771a83
GS
1078(F) Only hard references are allowed by "strict refs". Symbolic
1079references are disallowed. See L<perlref>.
6df41af2 1080
90b75b61 1081=item Can't use %! because Errno.pm is not available
1d2dff63
GS
1082
1083(F) The first time the %! hash is used, perl automatically loads the
1084Errno.pm module. The Errno module is expected to tie the %! hash to
1085provide symbolic names for C<$!> errno values.
1086
1109a392
MHM
1087=item Can't use both '<' and '>' after type '%c' in %s
1088
1089(F) A type cannot be forced to have both big-endian and little-endian
1090byte-order at the same time, so this combination of modifiers is not
1091allowed. See L<perlfunc/pack>.
1092
6df41af2
GS
1093=item Can't use %s for loop variable
1094
be771a83
GS
1095(F) Only a simple scalar variable may be used as a loop variable on a
1096foreach.
6df41af2
GS
1097
1098=item Can't use global %s in "my"
1099
be771a83
GS
1100(F) You tried to declare a magical variable as a lexical variable. This
1101is not allowed, because the magic can be tied to only one location
1102(namely the global variable) and it would be incredibly confusing to
1103have variables in your program that looked like magical variables but
6df41af2
GS
1104weren't.
1105
c07a80fd
PP
1106=item Can't use "my %s" in sort comparison
1107
1108(F) The global variables $a and $b are reserved for sort comparisons.
c47ff5f1 1109You mentioned $a or $b in the same line as the <=> or cmp operator,
c07a80fd
PP
1110and the variable had earlier been declared as a lexical variable.
1111Either qualify the sort variable with the package name, or rename the
1112lexical variable.
1113
a0d0e21e
LW
1114=item Can't use %s ref as %s ref
1115
1116(F) You've mixed up your reference types. You have to dereference a
1117reference of the type needed. You can use the ref() function to
1118test the type of the reference, if need be.
1119
748a9306 1120=item Can't use string ("%s") as %s ref while "strict refs" in use
a0d0e21e 1121
be771a83
GS
1122(F) Only hard references are allowed by "strict refs". Symbolic
1123references are disallowed. See L<perlref>.
a0d0e21e 1124
748a9306
LW
1125=item Can't use subscript on %s
1126
1127(F) The compiler tried to interpret a bracketed expression as a
1128subscript. But to the left of the brackets was an expression that
1129didn't look like an array reference, or anything else subscriptable.
1130
6df41af2
GS
1131=item Can't use \%c to mean $%c in expression
1132
75b44862
GS
1133(W syntax) In an ordinary expression, backslash is a unary operator that
1134creates a reference to its argument. The use of backslash to indicate a
1135backreference to a matched substring is valid only as part of a regular
be771a83
GS
1136expression pattern. Trying to do this in ordinary Perl code produces a
1137value that prints out looking like SCALAR(0xdecaf). Use the $1 form
1138instead.
6df41af2 1139
810b8aa5
GS
1140=item Can't weaken a nonreference
1141
1142(F) You attempted to weaken something that was not a reference. Only
1143references can be weakened.
1144
5f05dabc 1145=item Can't x= to read-only value
a0d0e21e 1146
be771a83
GS
1147(F) You tried to repeat a constant value (often the undefined value)
1148with an assignment operator, which implies modifying the value itself.
a0d0e21e
LW
1149Perhaps you need to copy the value to a temporary, and repeat that.
1150
49704364 1151=item Character in "C" format wrapped in pack
ac7cd81a
SC
1152
1153(W pack) You said
1154
1155 pack("C", $x)
1156
1157where $x is either less than 0 or more than 255; the C<"C"> format is
1158only for encoding native operating system characters (ASCII, EBCDIC,
1159and so on) and not for Unicode characters, so Perl behaved as if you meant
1160
1161 pack("C", $x & 255)
1162
1163If you actually want to pack Unicode codepoints, use the C<"U"> format
1164instead.
1165
49704364 1166=item Character in "c" format wrapped in pack
ac7cd81a
SC
1167
1168(W pack) You said
1169
1170 pack("c", $x)
1171
1172where $x is either less than -128 or more than 127; the C<"c"> format
1173is only for encoding native operating system characters (ASCII, EBCDIC,
1174and so on) and not for Unicode characters, so Perl behaved as if you meant
1175
1176 pack("c", $x & 255);
1177
1178If you actually want to pack Unicode codepoints, use the C<"U"> format
1179instead.
1180
96ebfdd7
RK
1181=item close() on unopened filehandle %s
1182
1183(W unopened) You tried to close a filehandle that was never opened.
1184
49704364
LW
1185=item Code missing after '/'
1186
1187(F) You had a (sub-)template that ends with a '/'. There must be another
1188template code following the slash. See L<perlfunc/pack>.
1189
6df41af2
GS
1190=item %s: Command not found
1191
be771a83
GS
1192(A) You've accidentally run your script through B<csh> instead of Perl.
1193Check the #! line, or manually feed your script into Perl yourself.
6df41af2 1194
7a2e2cd6
PP
1195=item Compilation failed in require
1196
1197(F) Perl could not compile a file specified in a C<require> statement.
be771a83
GS
1198Perl uses this generic message when none of the errors that it
1199encountered were severe enough to halt compilation immediately.
7a2e2cd6 1200
c3464db5
DD
1201=item Complex regular subexpression recursion limit (%d) exceeded
1202
be771a83
GS
1203(W regexp) The regular expression engine uses recursion in complex
1204situations where back-tracking is required. Recursion depth is limited
1205to 32766, or perhaps less in architectures where the stack cannot grow
1206arbitrarily. ("Simple" and "medium" situations are handled without
1207recursion and are not subject to a limit.) Try shortening the string
1208under examination; looping in Perl code (e.g. with C<while>) rather than
1209in the regular expression engine; or rewriting the regular expression so
c2e66d9e 1210that it is simpler or backtracks less. (See L<perlfaq2> for information
be771a83 1211on I<Mastering Regular Expressions>.)
c3464db5 1212
38875929
DM
1213=item cond_broadcast() called on unlocked variable
1214
1215(W threads) Within a thread-enabled program, you tried to call
1216cond_broadcast() on a variable which wasn't locked. The cond_broadcast()
1217function is used to wake up another thread that is waiting in a
1218cond_wait(). To ensure that the signal isn't sent before the other thread
1219has a chance to enter the wait, it is usual for the signaling thread to
1220first wait for a lock on variable. This lock attempt will only succeed
1221after the other thread has entered cond_wait() and thus relinquished the
1222lock.
1223
38875929
DM
1224=item cond_signal() called on unlocked variable
1225
1226(W threads) Within a thread-enabled program, you tried to call
1227cond_signal() on a variable which wasn't locked. The cond_signal()
1228function is used to wake up another thread that is waiting in a
1229cond_wait(). To ensure that the signal isn't sent before the other thread
1230has a chance to enter the wait, it is usual for the signaling thread to
1231first wait for a lock on variable. This lock attempt will only succeed
1232after the other thread has entered cond_wait() and thus relinquished the
1233lock.
1234
69282e91 1235=item connect() on closed socket %s
a0d0e21e 1236
be771a83
GS
1237(W closed) You tried to do a connect on a closed socket. Did you forget
1238to check the return value of your socket() call? See
1239L<perlfunc/connect>.
a0d0e21e 1240
41ab332f 1241=item Constant(%s)%s: %s
6df41af2 1242
be771a83
GS
1243(F) The parser found inconsistencies either while attempting to define
1244an overloaded constant, or when trying to find the character name
1245specified in the C<\N{...}> escape. Perhaps you forgot to load the
1246corresponding C<overload> or C<charnames> pragma? See L<charnames> and
1247L<overload>.
6df41af2 1248
779c5bc9
GS
1249=item Constant is not %s reference
1250
1251(F) A constant value (perhaps declared using the C<use constant> pragma)
be771a83
GS
1252is being dereferenced, but it amounts to the wrong type of reference.
1253The message indicates the type of reference that was expected. This
1254usually indicates a syntax error in dereferencing the constant value.
779c5bc9
GS
1255See L<perlsub/"Constant Functions"> and L<constant>.
1256
4cee8e80
CS
1257=item Constant subroutine %s redefined
1258
bb028877 1259(S) You redefined a subroutine which had previously been
be771a83
GS
1260eligible for inlining. See L<perlsub/"Constant Functions"> for
1261commentary and workarounds.
4cee8e80 1262
9607fc9c
PP
1263=item Constant subroutine %s undefined
1264
be771a83
GS
1265(W misc) You undefined a subroutine which had previously been eligible
1266for inlining. See L<perlsub/"Constant Functions"> for commentary and
1267workarounds.
9607fc9c 1268
e7ea3e70
IZ
1269=item Copy method did not return a reference
1270
64977eb6 1271(F) The method which overloads "=" is buggy. See
13a2d996 1272L<overload/Copy Constructor>.
e7ea3e70 1273
6798c92b
GS
1274=item CORE::%s is not a keyword
1275
1276(F) The CORE:: namespace is reserved for Perl keywords.
1277
a0d0e21e
LW
1278=item corrupted regexp pointers
1279
1280(P) The regular expression engine got confused by what the regular
1281expression compiler gave it.
1282
1283=item corrupted regexp program
1284
be771a83
GS
1285(P) The regular expression engine got passed a regexp program without a
1286valid magic number.
a0d0e21e 1287
6df41af2
GS
1288=item Corrupt malloc ptr 0x%lx at 0x%lx
1289
1290(P) The malloc package that comes with Perl had an internal failure.
1291
49704364
LW
1292=item Count after length/code in unpack
1293
1294(F) You had an unpack template indicating a counted-length string, but
1295you have also specified an explicit size for the string. See
1296L<perlfunc/pack>.
1297
a0d0e21e
LW
1298=item Deep recursion on subroutine "%s"
1299
be771a83
GS
1300(W recursion) This subroutine has called itself (directly or indirectly)
1301100 times more than it has returned. This probably indicates an
1302infinite recursion, unless you're writing strange benchmark programs, in
1303which case it indicates something else.
a0d0e21e 1304
f10b0346 1305=item defined(@array) is deprecated
69794302 1306
be771a83
GS
1307(D deprecated) defined() is not usually useful on arrays because it
1308checks for an undefined I<scalar> value. If you want to see if the
64977eb6 1309array is empty, just use C<if (@array) { # not empty }> for example.
69794302 1310
f10b0346 1311=item defined(%hash) is deprecated
69794302 1312
be771a83
GS
1313(D deprecated) defined() is not usually useful on hashes because it
1314checks for an undefined I<scalar> value. If you want to see if the hash
64977eb6 1315is empty, just use C<if (%hash) { # not empty }> for example.
69794302 1316
62658f4d
PM
1317=item %s defines neither package nor VERSION--version check failed
1318
1319(F) You said something like "use Module 42" but in the Module file
1320there are neither package declarations nor a C<$VERSION>.
1321
fc36a67e
PP
1322=item Delimiter for here document is too long
1323
be771a83
GS
1324(F) In a here document construct like C<<<FOO>, the label C<FOO> is too
1325long for Perl to handle. You have to be seriously twisted to write code
1326that triggers this error.
fc36a67e 1327
500ab966
RGS
1328=item DESTROY created new reference to dead object '%s'
1329
1330(F) A DESTROY() method created a new reference to the object which is
1331just being DESTROYed. Perl is confused, and prefers to abort rather than
1332to create a dangling reference.
1333
3cdd684c
TP
1334=item Did not produce a valid header
1335
1336See Server error.
1337
6df41af2
GS
1338=item %s did not return a true value
1339
1340(F) A required (or used) file must return a true value to indicate that
1341it compiled correctly and ran its initialization code correctly. It's
1342traditional to end such a file with a "1;", though any true value would
1343do. See L<perlfunc/require>.
1344
cc507455 1345=item (Did you mean &%s instead?)
4633a7c4 1346
be771a83
GS
1347(W) You probably referred to an imported subroutine &FOO as $FOO or some
1348such.
4633a7c4 1349
cc507455 1350=item (Did you mean "local" instead of "our"?)
33633739 1351
be771a83
GS
1352(W misc) Remember that "our" does not localize the declared global
1353variable. You have declared it again in the same lexical scope, which
1354seems superfluous.
33633739 1355
cc507455 1356=item (Did you mean $ or @ instead of %?)
a0d0e21e 1357
be771a83
GS
1358(W) You probably said %hash{$key} when you meant $hash{$key} or
1359@hash{@keys}. On the other hand, maybe you just meant %hash and got
1360carried away.
748a9306 1361
7e1af8bc 1362=item Died
5f05dabc
PP
1363
1364(F) You passed die() an empty string (the equivalent of C<die "">) or
1365you called it with no args and both C<$@> and C<$_> were empty.
1366
3cdd684c
TP
1367=item Document contains no data
1368
1369See Server error.
1370
62658f4d
PM
1371=item %s does not define %s::VERSION--version check failed
1372
1373(F) You said something like "use Module 42" but the Module did not
1374define a C<$VERSION.>
1375
49704364
LW
1376=item '/' does not take a repeat count
1377
1378(F) You cannot put a repeat count of any kind right after the '/' code.
1379See L<perlfunc/pack>.
1380
a0d0e21e
LW
1381=item Don't know how to handle magic of type '%s'
1382
1383(P) The internal handling of magical variables has been cursed.
1384
1385=item do_study: out of memory
1386
1387(P) This should have been caught by safemalloc() instead.
1388
6df41af2
GS
1389=item (Do you need to predeclare %s?)
1390
56da5a46
RGS
1391(S syntax) This is an educated guess made in conjunction with the message
1392"%s found where operator expected". It often means a subroutine or module
6df41af2
GS
1393name is being referenced that hasn't been declared yet. This may be
1394because of ordering problems in your file, or because of a missing
be771a83
GS
1395"sub", "package", "require", or "use" statement. If you're referencing
1396something that isn't defined yet, you don't actually have to define the
1397subroutine or package before the current location. You can use an empty
1398"sub foo;" or "package FOO;" to enter a "forward" declaration.
6df41af2 1399
ac206dc8
RGS
1400=item dump() better written as CORE::dump()
1401
1402(W misc) You used the obsolescent C<dump()> built-in function, without fully
1403qualifying it as C<CORE::dump()>. Maybe it's a typo. See L<perlfunc/dump>.
1404
a0d0e21e
LW
1405=item Duplicate free() ignored
1406
be771a83
GS
1407(S malloc) An internal routine called free() on something that had
1408already been freed.
a0d0e21e 1409
1109a392
MHM
1410=item Duplicate modifier '%c' after '%c' in %s
1411
1412(W) You have applied the same modifier more than once after a type
1413in a pack template. See L<perlfunc/pack>.
1414
4633a7c4
LW
1415=item elseif should be elsif
1416
56da5a46
RGS
1417(S syntax) There is no keyword "elseif" in Perl because Larry thinks it's
1418ugly. Your code will be interpreted as an attempt to call a method named
be771a83 1419"elseif" for the class returned by the following block. This is
4633a7c4
LW
1420unlikely to be what you want.
1421
ab13f0c7
JH
1422=item Empty %s
1423
af6f566e
HS
1424(F) C<\p> and C<\P> are used to introduce a named Unicode property, as
1425described in L<perlunicode> and L<perlre>. You used C<\p> or C<\P> in
1426a regular expression without specifying the property name.
ab13f0c7 1427
85ab1d1d 1428=item entering effective %s failed
5ff3f7a4 1429
85ab1d1d 1430(F) While under the C<use filetest> pragma, switching the real and
5ff3f7a4
GS
1431effective uids or gids failed.
1432
c038024b
RGS
1433=item %ENV is aliased to %s
1434
1435(F) You're running under taint mode, and the C<%ENV> variable has been
1436aliased to another hash, so it doesn't reflect anymore the state of the
1437program's environment. This is potentially insecure.
1438
748a9306
LW
1439=item Error converting file specification %s
1440
5f05dabc 1441(F) An error peculiar to VMS. Because Perl may have to deal with file
748a9306 1442specifications in either VMS or Unix syntax, it converts them to a
be771a83
GS
1443single form when it must operate on them directly. Either you've passed
1444an invalid file specification to Perl, or you've found a case the
1445conversion routines don't handle. Drat.
748a9306 1446
e4d48cc9
GS
1447=item %s: Eval-group in insecure regular expression
1448
be771a83
GS
1449(F) Perl detected tainted data when trying to compile a regular
1450expression that contains the C<(?{ ... })> zero-width assertion, which
1451is unsafe. See L<perlre/(?{ code })>, and L<perlsec>.
e4d48cc9 1452
e4d48cc9
GS
1453=item %s: Eval-group not allowed at run time
1454
be771a83
GS
1455(F) Perl tried to compile a regular expression containing the
1456C<(?{ ... })> zero-width assertion at run time, as it would when the
1457pattern contains interpolated values. Since that is a security risk, it
1458is not allowed. If you insist, you may still do this by explicitly
1459building the pattern from an interpolated string at run time and using
1460that in an eval(). See L<perlre/(?{ code })>.
e4d48cc9 1461
6df41af2
GS
1462=item %s: Eval-group not allowed, use re 'eval'
1463
be771a83
GS
1464(F) A regular expression contained the C<(?{ ... })> zero-width
1465assertion, but that construct is only allowed when the C<use re 'eval'>
1466pragma is in effect. See L<perlre/(?{ code })>.
6df41af2 1467
fc36a67e
PP
1468=item Excessively long <> operator
1469
1470(F) The contents of a <> operator may not exceed the maximum size of a
1471Perl identifier. If you're just trying to glob a long list of
1472filenames, try using the glob() operator, or put the filenames into a
1473variable and glob that.
1474
ed9aa3b7
SG
1475=item exec? I'm not *that* kind of operating system
1476
1477(F) The C<exec> function is not implemented in MacPerl. See L<perlport>.
1478
f86702cc 1479=item Execution of %s aborted due to compilation errors
a0d0e21e
LW
1480
1481(F) The final summary message when a Perl compilation fails.
1482
1483=item Exiting eval via %s
1484
be771a83
GS
1485(W exiting) You are exiting an eval by unconventional means, such as a
1486goto, or a loop control statement.
e476b1b5
GS
1487
1488=item Exiting format via %s
1489
9a2ff54b 1490(W exiting) You are exiting a format by unconventional means, such as a
be771a83 1491goto, or a loop control statement.
a0d0e21e 1492
0a753a76
PP
1493=item Exiting pseudo-block via %s
1494
be771a83
GS
1495(W exiting) You are exiting a rather special block construct (like a
1496sort block or subroutine) by unconventional means, such as a goto, or a
1497loop control statement. See L<perlfunc/sort>.
0a753a76 1498
a0d0e21e
LW
1499=item Exiting subroutine via %s
1500
be771a83
GS
1501(W exiting) You are exiting a subroutine by unconventional means, such
1502as a goto, or a loop control statement.
a0d0e21e
LW
1503
1504=item Exiting substitution via %s
1505
be771a83
GS
1506(W exiting) You are exiting a substitution by unconventional means, such
1507as a return, a goto, or a loop control statement.
a0d0e21e 1508
7b8d334a
GS
1509=item Explicit blessing to '' (assuming package main)
1510
be771a83
GS
1511(W misc) You are blessing a reference to a zero length string. This has
1512the effect of blessing the reference into the package main. This is
1513usually not what you want. Consider providing a default target package,
1514e.g. bless($ref, $p || 'MyPackage');
7b8d334a 1515
6df41af2
GS
1516=item %s: Expression syntax
1517
be771a83
GS
1518(A) You've accidentally run your script through B<csh> instead of Perl.
1519Check the #! line, or manually feed your script into Perl yourself.
6df41af2
GS
1520
1521=item %s failed--call queue aborted
1522
1523(F) An untrapped exception was raised while executing a CHECK, INIT, or
1524END subroutine. Processing of the remainder of the queue of such
1525routines has been prematurely ended.
1526
7253e4e3 1527=item False [] range "%s" in regex; marked by <-- HERE in m/%s/
73b437c8 1528
be771a83 1529(W regexp) A character class range must start and end at a literal
7253e4e3
RK
1530character, not another character class like C<\d> or C<[:alpha:]>. The "-"
1531in your false range is interpreted as a literal "-". Consider quoting the
1532"-", "\-". The <-- HERE shows in the regular expression about where the
1533problem was discovered. See L<perlre>.
73b437c8 1534
748a9306 1535=item Fatal VMS error at %s, line %d
a0d0e21e 1536
be771a83
GS
1537(P) An error peculiar to VMS. Something untoward happened in a VMS
1538system service or RTL routine; Perl's exit status should provide more
1539details. The filename in "at %s" and the line number in "line %d" tell
1540you which section of the Perl source code is distressed.
a0d0e21e
LW
1541
1542=item fcntl is not implemented
1543
1544(F) Your machine apparently doesn't implement fcntl(). What is this, a
1545PDP-11 or something?
1546
af8c498a 1547=item Filehandle %s opened only for input
a0d0e21e 1548
6c8d78fb
HS
1549(W io) You tried to write on a read-only filehandle. If you intended
1550it to be a read-write filehandle, you needed to open it with "+<" or
1551"+>" or "+>>" instead of with "<" or nothing. If you intended only to
1552write the file, use ">" or ">>". See L<perlfunc/open>.
a0d0e21e 1553
af8c498a 1554=item Filehandle %s opened only for output
a0d0e21e 1555
6c8d78fb
HS
1556(W io) You tried to read from a filehandle opened only for writing, If
1557you intended it to be a read/write filehandle, you needed to open it
be771a83
GS
1558with "+<" or "+>" or "+>>" instead of with "<" or nothing. If you
1559intended only to read from the file, use "<". See L<perlfunc/open>.
6c8d78fb
HS
1560Another possibility is that you attempted to open filedescriptor 0
1561(also known as STDIN) for output (maybe you closed STDIN earlier?).
97828cef
RGS
1562
1563=item Filehandle %s reopened as %s only for input
1564
1565(W io) You opened for reading a filehandle that got the same filehandle id
1566as STDOUT or STDERR. This occured because you closed STDOUT or STDERR
1567previously.
1568
1569=item Filehandle STDIN reopened as %s only for output
1570
1571(W io) You opened for writing a filehandle that got the same filehandle id
1572as STDIN. This occured because you closed STDIN previously.
a0d0e21e
LW
1573
1574=item Final $ should be \$ or $name
1575
1576(F) You must now decide whether the final $ in a string was meant to be
be771a83
GS
1577a literal dollar sign, or was meant to introduce a variable name that
1578happens to be missing. So you have to put either the backslash or the
1579name.
a0d0e21e 1580
56e90b21
GS
1581=item flock() on closed filehandle %s
1582
be771a83 1583(W closed) The filehandle you're attempting to flock() got itself closed
c289d2f7 1584some time before now. Check your control flow. flock() operates on
be771a83
GS
1585filehandles. Are you attempting to call flock() on a dirhandle by the
1586same name?
56e90b21 1587
6df41af2
GS
1588=item Format not terminated
1589
1590(F) A format must be terminated by a line with a solitary dot. Perl got
1591to the end of your file without finding such a line.
1592
a0d0e21e
LW
1593=item Format %s redefined
1594
e476b1b5 1595(W redefine) You redefined a format. To suppress this warning, say
a0d0e21e
LW
1596
1597 {
271595cc 1598 no warnings 'redefine';
a0d0e21e
LW
1599 eval "format NAME =...";
1600 }
1601
a0d0e21e
LW
1602=item Found = in conditional, should be ==
1603
e476b1b5 1604(W syntax) You said
a0d0e21e
LW
1605
1606 if ($foo = 123)
1607
1608when you meant
1609
1610 if ($foo == 123)
1611
1612(or something like that).
1613
6df41af2
GS
1614=item %s found where operator expected
1615
56da5a46
RGS
1616(S syntax) The Perl lexer knows whether to expect a term or an operator.
1617If it sees what it knows to be a term when it was expecting to see an
be771a83
GS
1618operator, it gives you this warning. Usually it indicates that an
1619operator or delimiter was omitted, such as a semicolon.
6df41af2 1620
a0d0e21e
LW
1621=item gdbm store returned %d, errno %d, key "%s"
1622
1623(S) A warning from the GDBM_File extension that a store failed.
1624
1625=item gethostent not implemented
1626
1627(F) Your C library apparently doesn't implement gethostent(), probably
1628because if it did, it'd feel morally obligated to return every hostname
1629on the Internet.
1630
69282e91 1631=item get%sname() on closed socket %s
a0d0e21e 1632
be771a83
GS
1633(W closed) You tried to get a socket or peer socket name on a closed
1634socket. Did you forget to check the return value of your socket() call?
a0d0e21e 1635
748a9306
LW
1636=item getpwnam returned invalid UIC %#o for user "%s"
1637
1638(S) A warning peculiar to VMS. The call to C<sys$getuai> underlying the
1639C<getpwnam> operator returned an invalid UIC.
1640
6df41af2
GS
1641=item getsockopt() on closed socket %s
1642
be771a83
GS
1643(W closed) You tried to get a socket option on a closed socket. Did you
1644forget to check the return value of your socket() call? See
6df41af2
GS
1645L<perlfunc/getsockopt>.
1646
1647=item Global symbol "%s" requires explicit package name
1648
1649(F) You've said "use strict vars", which indicates that all variables
1650must either be lexically scoped (using "my"), declared beforehand using
1651"our", or explicitly qualified to say which package the global variable
1652is in (using "::").
1653
e476b1b5
GS
1654=item glob failed (%s)
1655
be771a83
GS
1656(W glob) Something went wrong with the external program(s) used for
1657C<glob> and C<< <*.c> >>. Usually, this means that you supplied a
1658C<glob> pattern that caused the external program to fail and exit with a
1659nonzero status. If the message indicates that the abnormal exit
1660resulted in a coredump, this may also mean that your csh (C shell) is
1661broken. If so, you should change all of the csh-related variables in
1662config.sh: If you have tcsh, make the variables refer to it as if it
1663were csh (e.g. C<full_csh='/usr/bin/tcsh'>); otherwise, make them all
1664empty (except that C<d_csh> should be C<'undef'>) so that Perl will
1665think csh is missing. In either case, after editing config.sh, run
75b44862 1666C<./Configure -S> and rebuild Perl.
e476b1b5 1667
a0d0e21e
LW
1668=item Glob not terminated
1669
1670(F) The lexer saw a left angle bracket in a place where it was expecting
be771a83
GS
1671a term, so it's looking for the corresponding right angle bracket, and
1672not finding it. Chances are you left some needed parentheses out
1673earlier in the line, and you really meant a "less than".
a0d0e21e 1674
6df41af2 1675=item Got an error from DosAllocMem
a0d0e21e 1676
6df41af2
GS
1677(P) An error peculiar to OS/2. Most probably you're using an obsolete
1678version of Perl, and this should not happen anyway.
a0d0e21e
LW
1679
1680=item goto must have label
1681
1682(F) Unlike with "next" or "last", you're not allowed to goto an
1683unspecified destination. See L<perlfunc/goto>.
1684
49704364 1685=item ()-group starts with a count
18529408 1686
49704364 1687(F) A ()-group started with a count. A count is
18529408 1688supposed to follow something: a template character or a ()-group.
49704364 1689 See L<perlfunc/pack>.
18529408 1690
6df41af2
GS
1691=item %s had compilation errors
1692
1693(F) The final summary message when a C<perl -c> fails.
1694
a0d0e21e
LW
1695=item Had to create %s unexpectedly
1696
be771a83
GS
1697(S internal) A routine asked for a symbol from a symbol table that ought
1698to have existed already, but for some reason it didn't, and had to be
1699created on an emergency basis to prevent a core dump.
a0d0e21e
LW
1700
1701=item Hash %%s missing the % in argument %d of %s()
1702
be771a83
GS
1703(D deprecated) Really old Perl let you omit the % on hash names in some
1704spots. This is now heavily deprecated.
a0d0e21e 1705
6df41af2
GS
1706=item %s has too many errors
1707
1708(F) The parser has given up trying to parse the program after 10 errors.
1709Further error messages would likely be uninformative.
1710
252aa082
JH
1711=item Hexadecimal number > 0xffffffff non-portable
1712
e476b1b5 1713(W portable) The hexadecimal number you specified is larger than 2**32-1
9e24b6e2
JH
1714(4294967295) and therefore non-portable between systems. See
1715L<perlport> for more on portability concerns.
252aa082 1716
8903cb82
PP
1717=item Identifier too long
1718
1719(F) Perl limits identifiers (names for variables, functions, etc.) to
fc36a67e 1720about 250 characters for simple names, and somewhat more for compound
be771a83
GS
1721names (like C<$A::B>). You've exceeded Perl's limits. Future versions
1722of Perl are likely to eliminate these arbitrary limitations.
8903cb82 1723
6df41af2 1724=item Illegal binary digit %s
f675dbe5 1725
6df41af2 1726(F) You used a digit other than 0 or 1 in a binary number.
f675dbe5 1727
6df41af2 1728=item Illegal binary digit %s ignored
a0d0e21e 1729
be771a83
GS
1730(W digit) You may have tried to use a digit other than 0 or 1 in a
1731binary number. Interpretation of the binary number stopped before the
1732offending digit.
a0d0e21e 1733
4fdae800
PP
1734=item Illegal character %s (carriage return)
1735
d5898338 1736(F) Perl normally treats carriage returns in the program text as it
be771a83
GS
1737would any other whitespace, which means you should never see this error
1738when Perl was built using standard options. For some reason, your
1739version of Perl appears to have been built without this support. Talk
1740to your Perl administrator.
4fdae800 1741
d37a9538
ST
1742=item Illegal character in prototype for %s : %s
1743
420cdfc1 1744(W syntax) An illegal character was found in a prototype declaration. Legal
d37a9538
ST
1745characters in prototypes are $, @, %, *, ;, [, ], &, and \.
1746
904d85c5
RGS
1747=item Illegal declaration of anonymous subroutine
1748
1749(F) When using the C<sub> keyword to construct an anonymous subroutine,
1750you must always specify a block of code. See L<perlsub>.
1751
8e742a20
MHM
1752=item Illegal declaration of subroutine %s
1753
1754(F) A subroutine was not declared correctly. See L<perlsub>.
1755
a0d0e21e
LW
1756=item Illegal division by zero
1757
be771a83
GS
1758(F) You tried to divide a number by 0. Either something was wrong in
1759your logic, or you need to put a conditional in to guard against
1760meaningless input.
a0d0e21e 1761
6df41af2
GS
1762=item Illegal hexadecimal digit %s ignored
1763
be771a83
GS
1764(W digit) You may have tried to use a character other than 0 - 9 or
1765A - F, a - f in a hexadecimal number. Interpretation of the hexadecimal
1766number stopped before the illegal character.
6df41af2 1767
a0d0e21e
LW
1768=item Illegal modulus zero
1769
be771a83
GS
1770(F) You tried to divide a number by 0 to get the remainder. Most
1771numbers don't take to this kindly.
a0d0e21e 1772
6df41af2 1773=item Illegal number of bits in vec
399388f4 1774
6df41af2
GS
1775(F) The number of bits in vec() (the third argument) must be a power of
1776two from 1 to 32 (or 64, if your platform supports that).
399388f4
GS
1777
1778=item Illegal octal digit %s
a0d0e21e 1779
d1be9408 1780(F) You used an 8 or 9 in an octal number.
a0d0e21e 1781
399388f4 1782=item Illegal octal digit %s ignored
748a9306 1783
d1be9408 1784(W digit) You may have tried to use an 8 or 9 in an octal number.
75b44862 1785Interpretation of the octal number stopped before the 8 or 9.
748a9306 1786
6df41af2 1787=item Illegal switch in PERL5OPT: %s
6ff81951 1788
6df41af2 1789(X) The PERL5OPT environment variable may only be used to set the
1c4db469 1790following switches: B<-[DIMUdmtw]>.
6ff81951 1791
6df41af2 1792=item Ill-formed CRTL environ value "%s"
81e118e0 1793
75b44862 1794(W internal) A warning peculiar to VMS. Perl tried to read the CRTL's
be771a83
GS
1795internal environ array, and encountered an element without the C<=>
1796delimiter used to separate keys from values. The element is ignored.
09bef843 1797
6df41af2 1798=item Ill-formed message in prime_env_iter: |%s|
54310121 1799
be771a83
GS
1800(W internal) A warning peculiar to VMS. Perl tried to read a logical
1801name or CLI symbol definition when preparing to iterate over %ENV, and
1802didn't see the expected delimiter between key and value, so the line was
1803ignored.
54310121 1804
8fa7688f
SF
1805=item Impossible to activate assertion call
1806
1807(W assertions) You're calling an assertion function in a block that is
1808not under the control of the C<assertions> pragma.
1809
6df41af2 1810=item (in cleanup) %s
9607fc9c 1811
be771a83
GS
1812(W misc) This prefix usually indicates that a DESTROY() method raised
1813the indicated exception. Since destructors are usually called by the
1814system at arbitrary points during execution, and often a vast number of
1815times, the warning is issued only once for any number of failures that
1816would otherwise result in the same message being repeated.
6df41af2 1817
be771a83
GS
1818Failure of user callbacks dispatched using the C<G_KEEPERR> flag could
1819also result in this warning. See L<perlcall/G_KEEPERR>.
9607fc9c 1820
979699d9
JH
1821=item In EBCDIC the v-string components cannot exceed 2147483647
1822
1823(F) An error peculiar to EBCDIC. Internally, v-strings are stored as
1824Unicode code points, and encoded in EBCDIC as UTF-EBCDIC. The UTF-EBCDIC
1825encoding is limited to code points no larger than 2147483647 (0x7FFFFFFF).
1826
a0d0e21e
LW
1827=item Insecure dependency in %s
1828
8b1a09fc 1829(F) You tried to do something that the tainting mechanism didn't like.
be771a83
GS
1830The tainting mechanism is turned on when you're running setuid or
1831setgid, or when you specify B<-T> to turn it on explicitly. The
1832tainting mechanism labels all data that's derived directly or indirectly
1833from the user, who is considered to be unworthy of your trust. If any
1834such data is used in a "dangerous" operation, you get this error. See
1835L<perlsec> for more information.
a0d0e21e
LW
1836
1837=item Insecure directory in %s
1838
be771a83
GS
1839(F) You can't use system(), exec(), or a piped open in a setuid or
1840setgid script if C<$ENV{PATH}> contains a directory that is writable by
1841the world. See L<perlsec>.
a0d0e21e 1842
62f468fc 1843=item Insecure $ENV{%s} while running %s
a0d0e21e
LW
1844
1845(F) You can't use system(), exec(), or a piped open in a setuid or
62f468fc 1846setgid script if any of C<$ENV{PATH}>, C<$ENV{IFS}>, C<$ENV{CDPATH}>,
332d5f78
SR
1847C<$ENV{ENV}>, C<$ENV{BASH_ENV}> or C<$ENV{TERM}> are derived from data
1848supplied (or potentially supplied) by the user. The script must set
1849the path to a known value, using trustworthy data. See L<perlsec>.
a0d0e21e 1850
a7ae9550
GS
1851=item Integer overflow in %s number
1852
75b44862 1853(W overflow) The hexadecimal, octal or binary number you have specified
be771a83
GS
1854either as a literal or as an argument to hex() or oct() is too big for
1855your architecture, and has been converted to a floating point number.
1856On a 32-bit architecture the largest hexadecimal, octal or binary number
9e24b6e2
JH
1857representable without overflow is 0xFFFFFFFF, 037777777777, or
18580b11111111111111111111111111111111 respectively. Note that Perl
1859transparently promotes all numbers to a floating point representation
1860internally--subject to loss of precision errors in subsequent
1861operations.
bbce6d69 1862
46314c13
JP
1863=item Integer overflow in version
1864
1865(F) Some portion of a version initialization is too large for the
1866size of integers for your architecture. This is not a warning
1867because there is no rational reason for a version to try and use a
1868element larger than typically 2**32. This is usually caused by
1869trying to use some odd mathematical operation as a version, like
1870100/9.
1871
7253e4e3 1872=item Internal disaster in regex; marked by <-- HERE in m/%s/
6df41af2
GS
1873
1874(P) Something went badly wrong in the regular expression parser.
7253e4e3 1875The <-- HERE shows in the regular expression about where the problem was
b45f050a
JF
1876discovered.
1877
748a9306
LW
1878=item Internal inconsistency in tracking vforks
1879
be771a83
GS
1880(S) A warning peculiar to VMS. Perl keeps track of the number of times
1881you've called C<fork> and C<exec>, to determine whether the current call
1882to C<exec> should affect the current script or a subprocess (see
1883L<perlvms/"exec LIST">). Somehow, this count has become scrambled, so
1884Perl is making a guess and treating this C<exec> as a request to
1885terminate the Perl script and execute the specified command.
748a9306 1886
7253e4e3 1887=item Internal urp in regex; marked by <-- HERE in m/%s/
b45f050a 1888
7253e4e3
RK
1889(P) Something went badly awry in the regular expression parser. The
1890<-- HERE shows in the regular expression about where the problem was
1891discovered.
a0d0e21e 1892
6df41af2
GS
1893=item %s (...) interpreted as function
1894
75b44862 1895(W syntax) You've run afoul of the rule that says that any list operator
be771a83 1896followed by parentheses turns into a function, with all the list
64977eb6 1897operators arguments found inside the parentheses. See
13a2d996 1898L<perlop/Terms and List Operators (Leftward)>.
6df41af2 1899
09bef843
SB
1900=item Invalid %s attribute: %s
1901
1902The indicated attribute for a subroutine or variable was not recognized
1903by Perl or by a user-supplied handler. See L<attributes>.
1904
1905=item Invalid %s attributes: %s
1906
be771a83
GS
1907The indicated attributes for a subroutine or variable were not
1908recognized by Perl or by a user-supplied handler. See L<attributes>.
09bef843 1909
c635e13b
PP
1910=item Invalid conversion in %s: "%s"
1911
be771a83
GS
1912(W printf) Perl does not understand the given format conversion. See
1913L<perlfunc/sprintf>.
c635e13b 1914
7253e4e3 1915=item Invalid [] range "%s" in regex; marked by <-- HERE in m/%s/
6df41af2
GS
1916
1917(F) The range specified in a character class had a minimum character
7253e4e3
RK
1918greater than the maximum character. One possibility is that you forgot the
1919C<{}> from your ending C<\x{}> - C<\x> without the curly braces can go only
1920up to C<ff>. The <-- HERE shows in the regular expression about where the
1921problem was discovered. See L<perlre>.
6df41af2 1922
d1573ac7 1923=item Invalid range "%s" in transliteration operator
c2e66d9e
GS
1924
1925(F) The range specified in the tr/// or y/// operator had a minimum
1926character greater than the maximum character. See L<perlop>.
1927
09bef843
SB
1928=item Invalid separator character %s in attribute list
1929
0120eecf 1930(F) Something other than a colon or whitespace was seen between the
be771a83
GS
1931elements of an attribute list. If the previous attribute had a
1932parenthesised parameter list, perhaps that list was terminated too soon.
1933See L<attributes>.
09bef843 1934
b4581f09
JH
1935=item Invalid separator character %s in PerlIO layer specification %s
1936
1937(W layer) When pushing layers onto the Perl I/O system, something other than a
1938colon or whitespace was seen between the elements of a layer list.
1939If the previous attribute had a parenthesised parameter list, perhaps that
1940list was terminated too soon.
1941
49704364 1942=item Invalid type '%s' in %s
96e4d5b1 1943
49704364
LW
1944(F) The given character is not a valid pack or unpack type.
1945See L<perlfunc/pack>.
1946(W) The given character is not a valid pack or unpack type but used to be
75b44862 1947silently ignored.
96e4d5b1 1948
46314c13
JP
1949=item Invalid version format (multiple underscores)
1950
1951(F) Versions may contain at most a single underscore, which signals
1952that the version is a beta release. See L<version> for the allowed
1953version formats.
1954
1955=item Invalid version format (underscores before decimal)
1956
1957(F) Versions may not contain decimals after the optional underscore.
1958See L<version> for the allowed version formats.
1959
a0d0e21e
LW
1960=item ioctl is not implemented
1961
1962(F) Your machine apparently doesn't implement ioctl(), which is pretty
1963strange for a machine that supports C.
1964
c289d2f7
JH
1965=item ioctl() on unopened %s
1966
1967(W unopened) You tried ioctl() on a filehandle that was never opened.
1968Check you control flow and number of arguments.
1969
363c40c4
SB
1970=item IO layers (like "%s") unavailable
1971
1972(F) Your Perl has not been configured to have PerlIO, and therefore
1973you cannot use IO layers. To have PerlIO Perl must be configured
1974with 'useperlio'.
1975
80cbd5ad
JH
1976=item IO::Socket::atmark not implemented on this architecture
1977
1978(F) Your machine doesn't implement the sockatmark() functionality,
1979neither as a system call or an ioctl call (SIOCATMARK).
1980
b4581f09
JH
1981=item $* is no longer supported
1982
1983(D deprecated) The special variable C<$*>, deprecated in older perls, has
1984been removed as of 5.9.0 and is no longer supported. You should use the
1985C<//m> and C<//s> regexp modifiers instead.
1986
6ad11d81
JH
1987=item `%s' is not a code reference
1988
04a80ee0
RGS
1989(W overload) The second (fourth, sixth, ...) argument of overload::constant
1990needs to be a code reference. Either an anonymous subroutine, or a reference
6ad11d81
JH
1991to a subroutine.
1992
1993=item `%s' is not an overloadable type
1994
04a80ee0
RGS
1995(W overload) You tried to overload a constant type the overload package is
1996unaware of.
6ad11d81 1997
a0d0e21e
LW
1998=item junk on end of regexp
1999
2000(P) The regular expression parser is confused.
2001
2002=item Label not found for "last %s"
2003
be771a83
GS
2004(F) You named a loop to break out of, but you're not currently in a loop
2005of that name, not even if you count where you were called from. See
2006L<perlfunc/last>.
a0d0e21e
LW
2007
2008=item Label not found for "next %s"
2009
2010(F) You named a loop to continue, but you're not currently in a loop of
2011that name, not even if you count where you were called from. See
2012L<perlfunc/last>.
2013
2014=item Label not found for "redo %s"
2015
2016(F) You named a loop to restart, but you're not currently in a loop of
2017that name, not even if you count where you were called from. See
2018L<perlfunc/last>.
2019
85ab1d1d 2020=item leaving effective %s failed
5ff3f7a4 2021
85ab1d1d 2022(F) While under the C<use filetest> pragma, switching the real and
5ff3f7a4
GS
2023effective uids or gids failed.
2024
49704364
LW
2025=item length/code after end of string in unpack
2026
2027(F) While unpacking, the string buffer was alread used up when an unpack
2028length/code combination tried to obtain more data. This results in
2029an undefined value for the length. See L<perlfunc/pack>.
2030
69282e91 2031=item listen() on closed socket %s
a0d0e21e 2032
be771a83
GS
2033(W closed) You tried to do a listen on a closed socket. Did you forget
2034to check the return value of your socket() call? See
2035L<perlfunc/listen>.
a0d0e21e 2036
49704364 2037=item Lookbehind longer than %d not implemented in regex; marked by <-- HERE in m/%s/
b45f050a
JF
2038
2039(F) There is currently a limit on the length of string which lookbehind can
7253e4e3
RK
2040handle. This restriction may be eased in a future release. The <-- HERE
2041shows in the regular expression about where the problem was discovered.
2e50fd82 2042
2f7da168
RK
2043=item lstat() on filehandle %s
2044
2045(W io) You tried to do an lstat on a filehandle. What did you mean
2046by that? lstat() makes sense only on filenames. (Perl did a fstat()
2047instead on the filehandle.)
2048
96ebfdd7
RK
2049=item Lvalue subs returning %s not implemented yet
2050
2051(F) Due to limitations in the current implementation, array and hash
2052values cannot be returned in subroutines used in lvalue context. See
2053L<perlsub/"Lvalue subroutines">.
2054
49704364
LW
2055=item Malformed integer in [] in pack
2056
2057(F) Between the brackets enclosing a numeric repeat count only digits
2058are permitted. See L<perlfunc/pack>.
2059
2060=item Malformed integer in [] in unpack
2061
2062(F) Between the brackets enclosing a numeric repeat count only digits
2063are permitted. See L<perlfunc/pack>.
2064
6df41af2
GS
2065=item Malformed PERLLIB_PREFIX
2066
2067(F) An error peculiar to OS/2. PERLLIB_PREFIX should be of the form
2068
2069 prefix1;prefix2
2070
2071or
6df41af2
GS
2072 prefix1 prefix2
2073
be771a83
GS
2074with nonempty prefix1 and prefix2. If C<prefix1> is indeed a prefix of
2075a builtin library search path, prefix2 is substituted. The error may
2076appear if components are not found, or are too long. See
fecfaeb8 2077"PERLLIB_PREFIX" in L<perlos2>.
6df41af2 2078
2f758a16
ST
2079=item Malformed prototype for %s: %s
2080
d37a9538
ST
2081(F) You tried to use a function with a malformed prototype. The
2082syntax of function prototypes is given a brief compile-time check for
2083obvious errors like invalid characters. A more rigorous check is run
2084when the function is called.
2f758a16 2085
ba210ebe
JH
2086=item Malformed UTF-8 character (%s)
2087
2088Perl detected something that didn't comply with UTF-8 encoding rules.
2089
901b21bf
JH
2090One possible cause is that you read in data that you thought to be in
2091UTF-8 but it wasn't (it was for example legacy 8-bit data). Another
2092possibility is careless use of utf8::upgrade().
2093
dea0fc0b
JH
2094=item Malformed UTF-16 surrogate
2095
2096Perl thought it was reading UTF-16 encoded character data but while
2097doing it Perl met a malformed Unicode surrogate.
2098
49704364 2099=item %s matches null string many times in regex; marked by <-- HERE in m/%s/
6df41af2
GS
2100
2101(W regexp) The pattern you've specified would be an infinite loop if the
7253e4e3
RK
2102regular expression engine didn't specifically check for that. The <-- HERE
2103shows in the regular expression about where the problem was discovered.
2104See L<perlre>.
6df41af2 2105
25f58aea
PN
2106=item "%s" may clash with future reserved word
2107
2108(W) This warning may be due to running a perl5 script through a perl4
2109interpreter, especially if the word that is being warned about is
2110"use" or "my".
2111
49704364 2112=item % may not be used in pack
6df41af2
GS
2113
2114(F) You can't pack a string by supplying a checksum, because the
be771a83
GS
2115checksumming process loses information, and you can't go the other way.
2116See L<perlfunc/unpack>.
6df41af2 2117
a0d0e21e
LW
2118=item Method for operation %s not found in package %s during blessing
2119
2120(F) An attempt was made to specify an entry in an overloading table that
e7ea3e70 2121doesn't resolve to a valid subroutine. See L<overload>.
a0d0e21e 2122
3cdd684c
TP
2123=item Method %s not permitted
2124
2125See Server error.
2126
a0d0e21e
LW
2127=item Might be a runaway multi-line %s string starting on line %d
2128
2129(S) An advisory indicating that the previous error may have been caused
2130by a missing delimiter on a string or pattern, because it eventually
2131ended earlier on the current line.
2132
2133=item Misplaced _ in number
2134
d4ced10d
JH
2135(W syntax) An underscore (underbar) in a numeric constant did not
2136separate two digits.
a0d0e21e 2137
4a2d328f 2138=item Missing %sbrace%s on \N{}
423cee85 2139
4a2d328f 2140(F) Wrong syntax of character name literal C<\N{charname}> within
423cee85
JH
2141double-quotish context.
2142
a0d0e21e
LW
2143=item Missing comma after first argument to %s function
2144
2145(F) While certain functions allow you to specify a filehandle or an
2146"indirect object" before the argument list, this ain't one of them.
2147
06eaf0bc
GS
2148=item Missing command in piped open
2149
be771a83
GS
2150(W pipe) You used the C<open(FH, "| command")> or
2151C<open(FH, "command |")> construction, but the command was missing or
2152blank.
06eaf0bc 2153
961ce445
RGS
2154=item Missing control char name in \c
2155
2156(F) A double-quoted string ended with "\c", without the required control
2157character name.
2158
6df41af2
GS
2159=item Missing name in "my sub"
2160
be771a83
GS
2161(F) The reserved syntax for lexically scoped subroutines requires that
2162they have a name with which they can be found.
6df41af2
GS
2163
2164=item Missing $ on loop variable
2165
be771a83
GS
2166(F) Apparently you've been programming in B<csh> too much. Variables
2167are always mentioned with the $ in Perl, unlike in the shells, where it
2168can vary from one line to the next.
6df41af2 2169
cc507455 2170=item (Missing operator before %s?)
748a9306 2171
56da5a46
RGS
2172(S syntax) This is an educated guess made in conjunction with the message
2173"%s found where operator expected". Often the missing operator is a comma.
748a9306 2174
ab13f0c7
JH
2175=item Missing right brace on %s
2176
2177(F) Missing right brace in C<\p{...}> or C<\P{...}>.
2178
d98d5fff 2179=item Missing right curly or square bracket
a0d0e21e 2180
be771a83
GS
2181(F) The lexer counted more opening curly or square brackets than closing
2182ones. As a general rule, you'll find it's missing near the place you
2183were last editing.
a0d0e21e 2184
6df41af2
GS
2185=item (Missing semicolon on previous line?)
2186
56da5a46
RGS
2187(S syntax) This is an educated guess made in conjunction with the message
2188"%s found where operator expected". Don't automatically put a semicolon on
6df41af2
GS
2189the previous line just because you saw this message.
2190
a0d0e21e
LW
2191=item Modification of a read-only value attempted
2192
2193(F) You tried, directly or indirectly, to change the value of a
5f05dabc 2194constant. You didn't, of course, try "2 = 1", because the compiler
a0d0e21e
LW
2195catches that. But an easy way to do the same thing is:
2196
2197 sub mod { $_[0] = 1 }
2198 mod(2);
2199
2200Another way is to assign to a substr() that's off the end of the string.
2201
c5674021
PDF
2202Yet another way is to assign to a C<foreach> loop I<VAR> when I<VAR>
2203is aliased to a constant in the look I<LIST>:
2204
2205 $x = 1;
2206 foreach my $n ($x, 2) {
2207 $n *= 2; # modifies the $x, but fails on attempt to modify the 2
64977eb6 2208 }
c5674021 2209
7a4340ed 2210=item Modification of non-creatable array value attempted, %s
a0d0e21e
LW
2211
2212(F) You tried to make an array value spring into existence, and the
2213subscript was probably negative, even counting from end of the array
2214backwards.
2215
7a4340ed 2216=item Modification of non-creatable hash value attempted, %s
a0d0e21e 2217
be771a83
GS
2218(P) You tried to make a hash value spring into existence, and it
2219couldn't be created for some peculiar reason.
a0d0e21e
LW
2220
2221=item Module name must be constant
2222
2223(F) Only a bare module name is allowed as the first argument to a "use".
2224
be98fb35 2225=item Module name required with -%c option
6df41af2 2226
be98fb35
GS
2227(F) The C<-M> or C<-m> options say that Perl should load some module, but
2228you omitted the name of the module. Consult L<perlrun> for full details
2229about C<-M> and C<-m>.
6df41af2 2230
ed9aa3b7
SG
2231=item More than one argument to open
2232
2233(F) The C<open> function has been asked to open multiple files. This
2234can happen if you are trying to open a pipe to a command that takes a
2235list of arguments, but have forgotten to specify a piped open mode.
2236See L<perlfunc/open> for details.
2237
a0d0e21e
LW
2238=item msg%s not implemented
2239
2240(F) You don't have System V message IPC on your system.
2241
2242=item Multidimensional syntax %s not supported
2243
75b44862
GS
2244(W syntax) Multidimensional arrays aren't written like C<$foo[1,2,3]>.
2245They're written like C<$foo[1][2][3]>, as in C.
8b1a09fc 2246
49704364 2247=item '/' must be followed by 'a*', 'A*' or 'Z*'
09bef843 2248
6df41af2 2249(F) You had a pack template indicating a counted-length string,
be771a83
GS
2250Currently the only things that can have their length counted are a*, A*
2251or Z*. See L<perlfunc/pack>.
6df41af2 2252
49704364 2253=item '/' must follow a numeric type in unpack
6df41af2 2254
49704364
LW
2255(F) You had an unpack template that contained a '/', but this did not
2256follow some unpack specification producing a numeric value.
2257See L<perlfunc/pack>.
6df41af2
GS
2258
2259=item "my sub" not yet implemented
2260
be771a83
GS
2261(F) Lexically scoped subroutines are not yet implemented. Don't try
2262that yet.
6df41af2
GS
2263
2264=item "my" variable %s can't be in a package
2265
be771a83
GS
2266(F) Lexically scoped variables aren't in a package, so it doesn't make
2267sense to try to declare one with a package qualifier on the front. Use
2268local() if you want to localize a package variable.
09bef843 2269
8b1a09fc
PP
2270=item Name "%s::%s" used only once: possible typo
2271
e476b1b5 2272(W once) Typographical errors often show up as unique variable names.
be771a83
GS
2273If you had a good reason for having a unique name, then just mention it
2274again somehow to suppress the message. The C<our> declaration is
77ca0c92 2275provided for this purpose.
a0d0e21e 2276
64b374f4
FD
2277NOTE: This warning detects symbols that have been used only once so $c, @c,
2278%c, *c, &c, sub c{}, c(), and c (the filehandle or format) are considered
2279the same; if a program uses $c only once but also uses any of the others it
2280will not trigger this warning.
2281
49704364
LW
2282=item Negative '/' count in unpack
2283
2284(F) The length count obtained from a length/code unpack operation was
2285negative. See L<perlfunc/pack>.
2286
a0d0e21e
LW
2287=item Negative length
2288
be771a83
GS
2289(F) You tried to do a read/write/send/recv operation with a buffer
2290length that is less than 0. This is difficult to imagine.
a0d0e21e 2291
ed9aa3b7
SG
2292=item Negative offset to vec in lvalue context
2293
2294(F) When C<vec> is called in an lvalue context, the second argument must be
2295greater than or equal to zero.
2296
7253e4e3 2297=item Nested quantifiers in regex; marked by <-- HERE in m/%s/
a0d0e21e 2298
b45f050a 2299(F) You can't quantify a quantifier without intervening parentheses. So
7253e4e3 2300things like ** or +* or ?* are illegal. The <-- HERE shows in the regular
b45f050a 2301expression about where the problem was discovered.
a0d0e21e 2302
7253e4e3 2303Note that the minimal matching quantifiers, C<*?>, C<+?>, and
be771a83 2304C<??> appear to be nested quantifiers, but aren't. See L<perlre>.
a0d0e21e 2305
6df41af2 2306=item %s never introduced
a0d0e21e 2307
be771a83
GS
2308(S internal) The symbol in question was declared but somehow went out of
2309scope before it could possibly have been used.
a0d0e21e 2310
dca6e23f
RB
2311=item Newline in left-justified string for %s
2312
2313(W printf) There is a newline in a string to be left justified by
2314C<printf> or C<sprintf>.
2315
2316The padding spaces will appear after the newline, which is probably not
2317what you wanted. Usually you should remove the newline from the string
2318and put formatting characters in the C<sprintf> format.
2319
a0d0e21e
LW
2320=item No %s allowed while running setuid
2321
be771a83
GS
2322(F) Certain operations are deemed to be too insecure for a setuid or
2323setgid script to even be allowed to attempt. Generally speaking there
2324will be another way to do what you want that is, if not secure, at least
2325securable. See L<perlsec>.
a0d0e21e 2326
a0d0e21e
LW
2327=item No comma allowed after %s
2328
2329(F) A list operator that has a filehandle or "indirect object" is not
2330allowed to have a comma between that and the following arguments.
2331Otherwise it'd be just another one of the arguments.
2332
0a753a76
PP
2333One possible cause for this is that you expected to have imported a
2334constant to your name space with B<use> or B<import> while no such
2335importing took place, it may for example be that your operating system
2336does not support that particular constant. Hopefully you did use an
2337explicit import list for the constants you expect to see, please see
2338L<perlfunc/use> and L<perlfunc/import>. While an explicit import list
2339would probably have caught this error earlier it naturally does not
2340remedy the fact that your operating system still does not support that
2341constant. Maybe you have a typo in the constants of the symbol import
2342list of B<use> or B<import> or in the constant name at the line where
2343this error was triggered?
2344
748a9306
LW
2345=item No command into which to pipe on command line
2346
be771a83
GS
2347(F) An error peculiar to VMS. Perl handles its own command line
2348redirection, and found a '|' at the end of the command line, so it
2349doesn't know where you want to pipe the output from this command.
748a9306 2350
a0d0e21e
LW
2351=item No DB::DB routine defined
2352
be771a83
GS
2353(F) The currently executing code was compiled with the B<-d> switch, but
2354for some reason the perl5db.pl file (or some facsimile thereof) didn't
2355define a routine to be called at the beginning of each statement. Which
2356is odd, because the file should have been required automatically, and
2357should have blown up the require if it didn't parse right.
a0d0e21e
LW
2358
2359=item No dbm on this machine
2360
2361(P) This is counted as an internal error, because every machine should
5f05dabc 2362supply dbm nowadays, because Perl comes with SDBM. See L<SDBM_File>.
a0d0e21e
LW
2363
2364=item No DBsub routine
2365
2366(F) The currently executing code was compiled with the B<-d> switch,
2367but for some reason the perl5db.pl file (or some facsimile thereof)
2368didn't define a DB::sub routine to be called at the beginning of each
2369ordinary subroutine call.
2370
96ebfdd7
RK
2371=item No B<-e> allowed in setuid scripts
2372
2373(F) A setuid script can't be specified by the user.
2374
c47ff5f1 2375=item No error file after 2> or 2>> on command line
748a9306 2376
be771a83
GS
2377(F) An error peculiar to VMS. Perl handles its own command line
2378redirection, and found a '2>' or a '2>>' on the command line, but can't
2379find the name of the file to which to write data destined for stderr.
748a9306 2380
49704364
LW
2381=item No group ending character '%c' found in template
2382
2383(F) A pack or unpack template has an opening '(' or '[' without its
2384matching counterpart. See L<perlfunc/pack>.
2385
c47ff5f1 2386=item No input file after < on command line
748a9306 2387
be771a83
GS
2388(F) An error peculiar to VMS. Perl handles its own command line
2389redirection, and found a '<' on the command line, but can't find the
2390name of the file from which to read data for stdin.
748a9306 2391
6df41af2
GS
2392=item No #! line
2393
2394(F) The setuid emulator requires that scripts have a well-formed #! line
2395even on machines that don't support the #! construct.
2396
2397=item "no" not allowed in expression
2398
be771a83
GS
2399(F) The "no" keyword is recognized and executed at compile time, and
2400returns no useful value. See L<perlmod>.
6df41af2 2401
c47ff5f1 2402=item No output file after > on command line
748a9306 2403
be771a83
GS
2404(F) An error peculiar to VMS. Perl handles its own command line
2405redirection, and found a lone '>' at the end of the command line, so it
2406doesn't know where you wanted to redirect stdout.
748a9306 2407
c47ff5f1 2408=item No output file after > or >> on command line
748a9306 2409
be771a83
GS
2410(F) An error peculiar to VMS. Perl handles its own command line
2411redirection, and found a '>' or a '>>' on the command line, but can't
2412find the name of the file to which to write data destined for stdout.
748a9306 2413
1ec3e8de
GS
2414=item No package name allowed for variable %s in "our"
2415
be771a83
GS
2416(F) Fully qualified variable names are not allowed in "our"
2417declarations, because that doesn't make much sense under existing
2418semantics. Such syntax is reserved for future extensions.
1ec3e8de 2419
a0d0e21e
LW
2420=item No Perl script found in input
2421
2422(F) You called C<perl -x>, but no line was found in the file beginning
2423with #! and containing the word "perl".
2424
2425=item No setregid available
2426
2427(F) Configure didn't find anything resembling the setregid() call for
2428your system.
2429
2430=item No setreuid available
2431
2432(F) Configure didn't find anything resembling the setreuid() call for
2433your system.
2434
a67e862a 2435=item No space allowed after -%c
a0d0e21e 2436
be771a83
GS
2437(F) The argument to the indicated command line switch must follow
2438immediately after the switch, without intervening spaces.
a0d0e21e 2439
6df41af2
GS
2440=item No %s specified for -%c
2441
2442(F) The indicated command line switch needs a mandatory argument, but
2443you haven't specified one.
2444
2c692339
RGS
2445=item No such class %s
2446
2447(F) You provided a class qualifier in a "my" or "our" declaration, but
2448this class doesn't exist at this point in your program.
2449
6df41af2
GS
2450=item No such pipe open
2451
2452(P) An error peculiar to VMS. The internal routine my_pclose() tried to
be771a83
GS
2453close a pipe which hadn't been opened. This should have been caught
2454earlier as an attempt to close an unopened filehandle.
6df41af2 2455
a0d0e21e
LW
2456=item No such signal: SIG%s
2457
be771a83
GS
2458(W signal) You specified a signal name as a subscript to %SIG that was
2459not recognized. Say C<kill -l> in your shell to see the valid signal
2460names on your system.
a0d0e21e
LW
2461
2462=item Not a CODE reference
2463
2464(F) Perl was trying to evaluate a reference to a code value (that is, a
2465subroutine), but found a reference to something else instead. You can
be771a83
GS
2466use the ref() function to find out what kind of ref it really was. See
2467also L<perlref>.
a0d0e21e
LW
2468
2469=item Not a format reference
2470
2471(F) I'm not sure how you managed to generate a reference to an anonymous
2472format, but this indicates you did, and that it didn't exist.
2473
2474=item Not a GLOB reference
2475
be771a83
GS
2476(F) Perl was trying to evaluate a reference to a "typeglob" (that is, a
2477symbol table entry that looks like C<*foo>), but found a reference to
2478something else instead. You can use the ref() function to find out what
2479kind of ref it really was. See L<perlref>.
a0d0e21e
LW
2480
2481=item Not a HASH reference
2482
be771a83
GS
2483(F) Perl was trying to evaluate a reference to a hash value, but found a
2484reference to something else instead. You can use the ref() function to
2485find out what kind of ref it really was. See L<perlref>.
a0d0e21e 2486
6df41af2
GS
2487=item Not an ARRAY reference
2488
be771a83
GS
2489(F) Perl was trying to evaluate a reference to an array value, but found
2490a reference to something else instead. You can use the ref() function
2491to find out what kind of ref it really was. See L<perlref>.
6df41af2 2492
a0d0e21e
LW
2493=item Not a perl script
2494
2495(F) The setuid emulator requires that scripts have a well-formed #! line
2496even on machines that don't support the #! construct. The line must
2497mention perl.
2498
2499=item Not a SCALAR reference
2500
be771a83
GS
2501(F) Perl was trying to evaluate a reference to a scalar value, but found
2502a reference to something else instead. You can use the ref() function
2503to find out what kind of ref it really was. See L<perlref>.
a0d0e21e
LW
2504
2505=item Not a subroutine reference
2506
2507(F) Perl was trying to evaluate a reference to a code value (that is, a
2508subroutine), but found a reference to something else instead. You can
be771a83
GS
2509use the ref() function to find out what kind of ref it really was. See
2510also L<perlref>.
a0d0e21e 2511
e7ea3e70 2512=item Not a subroutine reference in overload table
a0d0e21e
LW
2513
2514(F) An attempt was made to specify an entry in an overloading table that
8b1a09fc 2515doesn't somehow point to a valid subroutine. See L<overload>.
a0d0e21e 2516
a0d0e21e
LW
2517=item Not enough arguments for %s
2518
2519(F) The function requires more arguments than you specified.
2520
6df41af2
GS
2521=item Not enough format arguments
2522
be771a83
GS
2523(W syntax) A format specified more picture fields than the next line
2524supplied. See L<perlform>.
6df41af2
GS
2525
2526=item %s: not found
2527
be771a83
GS
2528(A) You've accidentally run your script through the Bourne shell instead
2529of Perl. Check the #! line, or manually feed your script into Perl
2530yourself.
6df41af2
GS
2531
2532=item no UTC offset information; assuming local time is UTC
a0d0e21e 2533
6df41af2
GS
2534(S) A warning peculiar to VMS. Perl was unable to find the local
2535timezone offset, so it's assuming that local system time is equivalent
be771a83
GS
2536to UTC. If it's not, define the logical name
2537F<SYS$TIMEZONE_DIFFERENTIAL> to translate to the number of seconds which
2538need to be added to UTC to get local time.
a0d0e21e
LW
2539
2540=item Null filename used
2541
be771a83
GS
2542(F) You can't require the null filename, especially because on many
2543machines that means the current directory! See L<perlfunc/require>.
a0d0e21e 2544
6df41af2
GS
2545=item NULL OP IN RUN
2546
be771a83
GS
2547(P debugging) Some internal routine called run() with a null opcode
2548pointer.
6df41af2 2549
55497cff
PP
2550=item Null picture in formline
2551
2552(F) The first argument to formline must be a valid format picture
2553specification. It was found to be empty, which probably means you
2554supplied it an uninitialized value. See L<perlform>.
2555
a0d0e21e
LW
2556=item Null realloc
2557
2558(P) An attempt was made to realloc NULL.
2559
2560=item NULL regexp argument
2561
5f05dabc 2562(P) The internal pattern matching routines blew it big time.
a0d0e21e
LW
2563
2564=item NULL regexp parameter
2565
2566(P) The internal pattern matching routines are out of their gourd.
2567
fc36a67e
PP
2568=item Number too long
2569
be771a83 2570(F) Perl limits the representation of decimal numbers in programs to
da75cd15 2571about 250 characters. You've exceeded that length. Future
be771a83
GS
2572versions of Perl are likely to eliminate this arbitrary limitation. In
2573the meantime, try using scientific notation (e.g. "1e6" instead of
2574"1_000_000").
fc36a67e 2575
6df41af2
GS
2576=item Octal number in vector unsupported
2577
be771a83
GS
2578(F) Numbers with a leading C<0> are not currently allowed in vectors.
2579The octal number interpretation of such numbers may be supported in a
2580future version.
6df41af2 2581
252aa082
JH
2582=item Octal number > 037777777777 non-portable
2583
75b44862 2584(W portable) The octal number you specified is larger than 2**32-1
be771a83
GS
2585(4294967295) and therefore non-portable between systems. See
2586L<perlport> for more on portability concerns.
252aa082
JH
2587
2588See also L<perlport> for writing portable code.
2589
6ad11d81
JH
2590=item Odd number of arguments for overload::constant
2591
04a80ee0
RGS
2592(W overload) The call to overload::constant contained an odd number of
2593arguments. The arguments should come in pairs.
6ad11d81 2594
b21befc1
MG
2595=item Odd number of elements in anonymous hash
2596
2597(W misc) You specified an odd number of elements to initialize a hash,
2598which is odd, because hashes come in key/value pairs.
2599
1930e939 2600=item Odd number of elements in hash assignment
a0d0e21e 2601
be771a83
GS
2602(W misc) You specified an odd number of elements to initialize a hash,
2603which is odd, because hashes come in key/value pairs.
a0d0e21e 2604
bbce6d69
PP
2605=item Offset outside string
2606
2607(F) You tried to do a read/write/send/recv operation with an offset
be771a83
GS
2608pointing outside the buffer. This is difficult to imagine. The sole
2609exception to this is that C<sysread()>ing past the buffer will extend
2610the buffer and zero pad the new area.
bbce6d69 2611
c289d2f7 2612=item %s() on unopened %s
2dd78f96
JH
2613
2614(W unopened) An I/O operation was attempted on a filehandle that was
2615never initialized. You need to do an open(), a sysopen(), or a socket()
2616call, or call a constructor from the FileHandle package.
2617
96ebfdd7
RK
2618=item -%s on unopened filehandle %s
2619
2620(W unopened) You tried to invoke a file test operator on a filehandle
2621that isn't open. Check your control flow. See also L<perlfunc/-X>.
2622
a0d0e21e
LW
2623=item oops: oopsAV
2624
e476b1b5 2625(S internal) An internal warning that the grammar is screwed up.
a0d0e21e
LW
2626
2627=item oops: oopsHV
2628
e476b1b5 2629(S internal) An internal warning that the grammar is screwed up.
a0d0e21e 2630
56f7f34b 2631=item Operation `%s': no method found, %s
44a8e56a 2632
be771a83
GS
2633(F) An attempt was made to perform an overloaded operation for which no
2634handler was defined. While some handlers can be autogenerated in terms
2635of other handlers, there is no default handler for any operation, unless
2636C<fallback> overloading key is specified to be true. See L<overload>.
44a8e56a 2637
748a9306
LW
2638=item Operator or semicolon missing before %s
2639
be771a83
GS
2640(S ambiguous) You used a variable or subroutine call where the parser
2641was expecting an operator. The parser has assumed you really meant to
2642use an operator, but this is highly likely to be incorrect. For
2643example, if you say "*foo *foo" it will be interpreted as if you said
2644"*foo * 'foo'".
748a9306 2645
6df41af2
GS
2646=item "our" variable %s redeclared
2647
be771a83
GS
2648(W misc) You seem to have already declared the same global once before
2649in the current lexical scope.
6df41af2 2650
a80b8354
GS
2651=item Out of memory!
2652
2653(X) The malloc() function returned 0, indicating there was insufficient
be771a83
GS
2654remaining memory (or virtual memory) to satisfy the request. Perl has
2655no option but to exit immediately.
a80b8354 2656
19a52907
JH
2657At least in Unix you may be able to get past this by increasing your
2658process datasize limits: in csh/tcsh use C<limit> and
2659C<limit datasize n> (where C<n> is the number of kilobytes) to check
2660the current limits and change them, and in ksh/bash/zsh use C<ulimit -a>
2661and C<ulimit -d n>, respectively.
2662
6df41af2 2663=item Out of memory during "large" request for %s
a0d0e21e 2664
6df41af2
GS
2665(F) The malloc() function returned 0, indicating there was insufficient
2666remaining memory (or virtual memory) to satisfy the request. However,
be771a83
GS
2667the request was judged large enough (compile-time default is 64K), so a
2668possibility to shut down by trapping this error is granted.
a0d0e21e 2669
2b573ace
JH
2670=item Out of memory during %s extend
2671
2672(X) An attempt was made to extend an array, a list, or a string beyond
2673the largest possible memory allocation.
2674
1b979e0a 2675=item Out of memory during request for %s
a0d0e21e 2676
be771a83
GS
2677(X|F) The malloc() function returned 0, indicating there was
2678insufficient remaining memory (or virtual memory) to satisfy the
2679request.
eff9c6e2
CS
2680
2681The request was judged to be small, so the possibility to trap it
2682depends on the way perl was compiled. By default it is not trappable.
be771a83
GS
2683However, if compiled for this, Perl may use the contents of C<$^M> as an
2684emergency pool after die()ing with this message. In this case the error
b022d2d2
IZ
2685is trappable I<once>, and the error message will include the line and file
2686where the failed request happened.
55497cff 2687
1b979e0a
IZ
2688=item Out of memory during ridiculously large request
2689
2690(F) You can't allocate more than 2^31+"small amount" bytes. This error
be771a83
GS
2691is most likely to be caused by a typo in the Perl program. e.g.,
2692C<$arr[time]> instead of C<$arr[$time]>.
1b979e0a 2693
6df41af2
GS
2694=item Out of memory for yacc stack
2695
be771a83
GS
2696(F) The yacc parser wanted to grow its stack so it could continue
2697parsing, but realloc() wouldn't give it more memory, virtual or
2698otherwise.
6df41af2 2699
49704364 2700=item '@' outside of string in unpack
6df41af2 2701
49704364 2702(F) You had a template that specified an absolute position outside
6df41af2
GS
2703the string being unpacked. See L<perlfunc/pack>.
2704
2705=item %s package attribute may clash with future reserved word: %s
2706
be771a83
GS
2707(W reserved) A lowercase attribute name was used that had a
2708package-specific handler. That name might have a meaning to Perl itself
2709some day, even though it doesn't yet. Perhaps you should use a
2710mixed-case attribute name, instead. See L<attributes>.
6df41af2 2711
96ebfdd7
RK
2712=item pack/unpack repeat count overflow
2713
2714(F) You can't specify a repeat count so large that it overflows your
2715signed integers. See L<perlfunc/pack>.
2716
a0d0e21e
LW
2717=item page overflow
2718
be771a83
GS
2719(W io) A single call to write() produced more lines than can fit on a
2720page. See L<perlform>.
a0d0e21e 2721
6df41af2
GS
2722=item panic: %s
2723
2724(P) An internal error.
2725
a0d0e21e
LW
2726=item panic: ck_grep
2727
2728(P) Failed an internal consistency check trying to compile a grep.
2729
2730=item panic: ck_split
2731
2732(P) Failed an internal consistency check trying to compile a split.
2733
2734=item panic: corrupt saved stack index
2735
be771a83
GS
2736(P) The savestack was requested to restore more localized values than
2737there are in the savestack.
a0d0e21e 2738
810b8aa5
GS
2739=item panic: del_backref
2740
2741(P) Failed an internal consistency check while trying to reset a weak
2742reference.
2743
7619c85e
RG
2744=item panic: Devel::DProf inconsistent subroutine return
2745
2746(P) Devel::DProf called a subroutine that exited using goto(LABEL),
2747last(LABEL) or next(LABEL). Leaving that way a subroutine called from
2748an XSUB will lead very probably to a crash of the interpreter. This is
2749a bug that will hopefully one day get fixed.
2750
a0d0e21e
LW
2751=item panic: die %s
2752
2753(P) We popped the context stack to an eval context, and then discovered
2754it wasn't an eval context.
2755
a0d0e21e
LW
2756=item panic: do_subst
2757
be771a83
GS
2758(P) The internal pp_subst() routine was called with invalid operational
2759data.
a0d0e21e 2760
2269b42e 2761=item panic: do_trans_%s
a0d0e21e 2762
2269b42e 2763(P) The internal do_trans routines were called with invalid operational
be771a83 2764data.
a0d0e21e 2765
c635e13b
PP
2766=item panic: frexp
2767
2768(P) The library function frexp() failed, making printf("%f") impossible.
2769
a0d0e21e
LW
2770=item panic: goto
2771
2772(P) We popped the context stack to a context with the specified label,
2773and then discovered it wasn't a context we know how to do a goto in.
2774
2775=item panic: INTERPCASEMOD
2776
2777(P) The lexer got into a bad state at a case modifier.
2778
2779=item panic: INTERPCONCAT
2780
2781(P) The lexer got into a bad state parsing a string with brackets.
2782
e446cec8
IZ
2783=item panic: kid popen errno read
2784
2785(F) forked child returned an incomprehensible message about its errno.
2786
a0d0e21e
LW
2787=item panic: last
2788
2789(P) We popped the context stack to a block context, and then discovered
2790it wasn't a block context.
2791
2792=item panic: leave_scope clearsv
2793
be771a83
GS
2794(P) A writable lexical variable became read-only somehow within the
2795scope.
a0d0e21e
LW
2796
2797=item panic: leave_scope inconsistency
2798
2799(P) The savestack probably got out of sync. At least, there was an
2800invalid enum on the top of it.
2801
810b8aa5
GS
2802=item panic: magic_killbackrefs
2803
2804(P) Failed an internal consistency check while trying to reset all weak
2805references to an object.
2806
6df41af2
GS
2807=item panic: malloc
2808
2809(P) Something requested a negative number of bytes of malloc.
2810
a0d0e21e
LW
2811=item panic: mapstart
2812
2813(P) The compiler is screwed up with respect to the map() function.
2814
27d5b266
JH
2815=item panic: memory wrap
2816
2817(P) Something tried to allocate more memory than possible.
2818
a0d0e21e
LW
2819=item panic: null array
2820
2821(P) One of the internal array routines was passed a null AV pointer.
2822
2823=item panic: pad_alloc
2824
2825(P) The compiler got confused about which scratch pad it was allocating
2826and freeing temporaries and lexicals from.
2827
2828=item panic: pad_free curpad
2829
2830(P) The compiler got confused about which scratch pad it was allocating
2831and freeing temporaries and lexicals from.
2832
2833=item panic: pad_free po
2834
2835(P) An invalid scratch pad offset was detected internally.
2836
2837=item panic: pad_reset curpad
2838
2839(P) The compiler got confused about which scratch pad it was allocating
2840and freeing temporaries and lexicals from.
2841
2842=item panic: pad_sv po
2843
2844(P) An invalid scratch pad offset was detected internally.
2845
2846=item panic: pad_swipe curpad
2847
2848(P) The compiler got confused about which scratch pad it was allocating
2849and freeing temporaries and lexicals from.
2850
2851=item panic: pad_swipe po
2852
2853(P) An invalid scratch pad offset was detected internally.
2854
2855=item panic: pp_iter
2856
2857(P) The foreach iterator got called in a non-loop context frame.
2858
96ebfdd7
RK
2859=item panic: pp_match%s
2860
2861(P) The internal pp_match() routine was called with invalid operational
2862data.
2863
2269b42e
JH
2864=item panic: pp_split
2865
2866(P) Something terrible went wrong in setting up for the split.
2867
a0d0e21e
LW
2868=item panic: realloc
2869
2870(P) Something requested a negative number of bytes of realloc.
2871
2872=item panic: restartop
2873
2874(P) Some internal routine requested a goto (or something like it), and
2875didn't supply the destination.
2876
2877=item panic: return
2878
2879(P) We popped the context stack to a subroutine or eval context, and
2880then discovered it wasn't a subroutine or eval context.
2881
2882=item panic: scan_num
2883
2884(P) scan_num() got called on something that wasn't a number.
2885
2886=item panic: sv_insert
2887
2888(P) The sv_insert() routine was told to remove more string than there
2889was string.
2890
2891=item panic: top_env
2892
6224f72b 2893(P) The compiler attempted to do a goto, or something weird like that.
a0d0e21e 2894
dea0fc0b
JH
2895=item panic: utf16_to_utf8: odd bytelen
2896
2897(P) Something tried to call utf16_to_utf8 with an odd (as opposed
64977eb6 2898to even) byte length.
dea0fc0b 2899
2f7da168
RK
2900=item panic: yylex
2901
2902(P) The lexer got into a bad state while processing a case modifier.
2903
7b8d334a 2904=item Parentheses missing around "%s" list
a0d0e21e 2905
e476b1b5 2906(W parenthesis) You said something like
a0d0e21e
LW
2907
2908 my $foo, $bar = @_;
2909
2910when you meant
2911
2912 my ($foo, $bar) = @_;
2913
54884818 2914Remember that "my", "our", and "local" bind tighter than comma.
a0d0e21e 2915
96ebfdd7
RK
2916=item C<-p> destination: %s
2917
2918(F) An error occurred during the implicit output invoked by the C<-p>
2919command-line switch. (This output goes to STDOUT unless you've
2920redirected it with select().)
2921
2922=item (perhaps you forgot to load "%s"?)
2923
2924(F) This is an educated guess made in conjunction with the message
2925"Can't locate object method \"%s\" via package \"%s\"". It often means
2926that a method requires a package that has not been loaded.
2927
75b44862 2928=item Perl %s required--this is only version %s, stopped
a0d0e21e 2929
be771a83
GS
2930(F) The module in question uses features of a version of Perl more
2931recent than the currently running version. How long has it been since
2932you upgraded, anyway? See L<perlfunc/require>.
a0d0e21e 2933
1109a392
MHM
2934=item Perl_my_%s() not available
2935
2936(F) Your platform has very uncommon byte-order and integer size,
2937so it was not possible to set up some or all fixed-width byte-order
2938conversion functions. This is only a problem when you're using the
2939'<' or '>' modifiers in (un)pack templates. See L<perlfunc/pack>.
2940
6df41af2
GS
2941=item PERL_SH_DIR too long
2942
2943(F) An error peculiar to OS/2. PERL_SH_DIR is the directory to find the
fecfaeb8 2944C<sh>-shell in. See "PERL_SH_DIR" in L<perlos2>.
6df41af2 2945
96ebfdd7
RK
2946=item PERL_SIGNALS illegal: "%s"
2947
2948See L<perlrun/PERL_SIGNALS> for legal values.
2949
6df41af2
GS
2950=item perl: warning: Setting locale failed.
2951
2952(S) The whole warning message will look something like:
2953
2954 perl: warning: Setting locale failed.
2955 perl: warning: Please check that your locale settings:
2956 LC_ALL = "En_US",
2957 LANG = (unset)
2958 are supported and installed on your system.
2959 perl: warning: Falling back to the standard locale ("C").
2960
2961Exactly what were the failed locale settings varies. In the above the
2962settings were that the LC_ALL was "En_US" and the LANG had no value.
0ea6b70f
JH
2963This error means that Perl detected that you and/or your operating
2964system supplier and/or system administrator have set up the so-called
2965locale system but Perl could not use those settings. This was not
2966dead serious, fortunately: there is a "default locale" called "C" that
2967Perl can and will use, the script will be run. Before you really fix
2968the problem, however, you will get the same error message each time
2969you run Perl. How to really fix the problem can be found in
2970L<perllocale> section B<LOCALE PROBLEMS>.
6df41af2 2971
a0d0e21e
LW
2972=item Permission denied
2973
2974(F) The setuid emulator in suidperl decided you were up to no good.
2975
bd3fa61c 2976=item pid %x not a child
748a9306 2977
be771a83
GS
2978(W exec) A warning peculiar to VMS. Waitpid() was asked to wait for a
2979process which isn't a subprocess of the current process. While this is
2980fine from VMS' perspective, it's probably not what you intended.
748a9306 2981
49704364 2982=item 'P' must have an explicit size in unpack
3bf38418
WL
2983
2984(F) The unpack format P must have an explicit size, not "*".
2985
96ebfdd7
RK
2986=item B<-P> not allowed for setuid/setgid script
2987
2988(F) The script would have to be opened by the C preprocessor by name,
2989which provides a race condition that breaks security.
2990
2991=item POSIX class [:%s:] unknown in regex; marked by <-- HERE in m/%s/
2992
2993(F) The class in the character class [: :] syntax is unknown. The <-- HERE
2994shows in the regular expression about where the problem was discovered.
2995Note that the POSIX character classes do B<not> have the C<is> prefix
2996the corresponding C interfaces have: in other words, it's C<[[:print:]]>,
2997not C<isprint>. See L<perlre>.
2998
2999=item POSIX getpgrp can't take an argument
3000
3001(F) Your system has POSIX getpgrp(), which takes no argument, unlike
3002the BSD version, which takes a pid.
3003
49704364 3004=item POSIX syntax [%s] belongs inside character classes in regex; marked by <-- HERE in m/%s/
b45f050a 3005
9a0b3859 3006(W regexp) The character class constructs [: :], [= =], and [. .] go
7253e4e3
RK
3007I<inside> character classes, the [] are part of the construct, for example:
3008/[012[:alpha:]345]/. Note that [= =] and [. .] are not currently
3009implemented; they are simply placeholders for future extensions and will
3010cause fatal errors. The <-- HERE shows in the regular expression about
3011where the problem was discovered. See L<perlre>.
b45f050a 3012
49704364 3013=item POSIX syntax [. .] is reserved for future extensions in regex; marked by <-- HERE in m/%s/
b45f050a
JF
3014
3015(F regexp) Within regular expression character classes ([]) the syntax
7253e4e3
RK
3016beginning with "[." and ending with ".]" is reserved for future extensions.
3017If you need to represent those character sequences inside a regular
3018expression character class, just quote the square brackets with the
3019backslash: "\[." and ".\]". The <-- HERE shows in the regular expression
3020about where the problem was discovered. See L<perlre>.
b45f050a 3021
49704364 3022=item POSIX syntax [= =] is reserved for future extensions in regex; marked by <-- HERE in m/%s/
b45f050a 3023
7253e4e3
RK
3024(F) Within regular expression character classes ([]) the syntax beginning
3025with "[=" and ending with "=]" is reserved for future extensions. If you
3026need to represent those character sequences inside a regular expression
3027character class, just quote the square brackets with the backslash: "\[="
3028and "=\]". The <-- HERE shows in the regular expression about where the
3029problem was discovered. See L<perlre>.
b45f050a 3030
bbce6d69
PP
3031=item Possible attempt to put comments in qw() list
3032
e476b1b5 3033(W qw) qw() lists contain items separated by whitespace; as with literal
75b44862 3034strings, comment characters are not ignored, but are instead treated as
be771a83
GS
3035literal data. (You may have used different delimiters than the
3036parentheses shown here; braces are also frequently used.)
bbce6d69 3037
774d564b
PP
3038You probably wrote something like this:
3039
54310121 3040 @list = qw(
774d564b 3041 a # a comment
bbce6d69 3042 b # another comment
774d564b 3043 );
bbce6d69
PP
3044
3045when you should have written this:
3046
774d564b 3047 @list = qw(
54310121
PP
3048 a
3049 b
774d564b
PP
3050 );
3051
3052If you really want comments, build your list the
3053old-fashioned way, with quotes and commas:
3054
3055 @list = (
3056 'a', # a comment
3057 'b', # another comment
3058 );
bbce6d69
PP
3059
3060=item Possible attempt to separate words with commas
3061
be771a83
GS
3062(W qw) qw() lists contain items separated by whitespace; therefore
3063commas aren't needed to separate the items. (You may have used
3064different delimiters than the parentheses shown here; braces are also
3065frequently used.)
bbce6d69 3066
54310121 3067You probably wrote something like this:
bbce6d69 3068
774d564b
PP
3069 qw! a, b, c !;
3070
3071which puts literal commas into some of the list items. Write it without
3072commas if you don't want them to appear in your data:
bbce6d69 3073
774d564b 3074 qw! a b c !;
bbce6d69 3075
a0d0e21e
LW
3076=item Possible memory corruption: %s overflowed 3rd argument
3077
3078(F) An ioctl() or fcntl() returned more than Perl was bargaining for.
3079Perl guesses a reasonable buffer size, but puts a sentinel byte at the
3080end of the buffer just in case. This sentinel byte got clobbered, and
3081Perl assumes that memory is now corrupted. See L<perlfunc/ioctl>.
3082
276b2a0c
RGS
3083=item Possible precedence problem on bitwise %c operator
3084
3085(W precedence) Your program uses a bitwise logical operator in conjunction
3086with a numeric comparison operator, like this :
3087
3088 if ($x & $y == 0) { ... }
3089
3090This expression is actually equivalent to C<$x & ($y == 0)>, due to the
3091higher precedence of C<==>. This is probably not what you want. (If you
96a925ab
YST
3092really meant to write this, disable the warning, or, better, put the
3093parentheses explicitly and write C<$x & ($y == 0)>).
276b2a0c 3094
18623440
PS
3095=item Possible unintended interpolation of %s in string
3096
3097(W ambiguous) You said something like `@foo' in a double-quoted string
32b0a12e
AMS
3098but there was no array C<@foo> in scope at the time. If you wanted a
3099literal @foo, then write it as \@foo; otherwise find out what happened
3100to the array you apparently lost track of.
18623440 3101
6df41af2
GS
3102=item Possible Y2K bug: %s
3103
3104(W y2k) You are concatenating the number 19 with another number, which
3105could be a potential Year 2000 problem.
3106
8cd79558
GS
3107=item pragma "attrs" is deprecated, use "sub NAME : ATTRS" instead
3108
a1063b2d 3109(D deprecated) You have written something like this:
8cd79558
GS
3110
3111 sub doit
3112 {
3113 use attrs qw(locked);
3114 }
3115
3116You should use the new declaration syntax instead.
3117
3118 sub doit : locked
3119 {
3120 ...
3121
3122The C<use attrs> pragma is now obsolete, and is only provided for
3123backward-compatibility. See L<perlsub/"Subroutine Attributes">.
3124
a0d0e21e
LW
3125=item Precedence problem: open %s should be open(%s)
3126
e476b1b5 3127(S precedence) The old irregular construct
cb1a09d0 3128
a0d0e21e
LW
3129 open FOO || die;
3130
3131is now misinterpreted as
3132
3133 open(FOO || die);
3134
be771a83
GS
3135because of the strict regularization of Perl 5's grammar into unary and
3136list operators. (The old open was a little of both.) You must put
3137parentheses around the filehandle, or use the new "or" operator instead
3138of "||".
a0d0e21e 3139
3cdd684c
TP
3140=item Premature end of script headers
3141
3142See Server error.
3143
6df41af2
GS
3144=item printf() on closed filehandle %s
3145
be771a83 3146(W closed) The filehandle you're writing to got itself closed sometime
c289d2f7 3147before now. Check your control flow.
6df41af2 3148
9a7dcd9c 3149=item print() on closed filehandle %s
a0d0e21e 3150
be771a83 3151(W closed) The filehandle you're printing on got itself closed sometime
c289d2f7 3152before now. Check your control flow.
a0d0e21e 3153
6df41af2 3154=item Process terminated by SIG%s
a0d0e21e 3155
6df41af2
GS
3156(W) This is a standard message issued by OS/2 applications, while *nix
3157applications die in silence. It is considered a feature of the OS/2
3158port. One can easily disable this by appropriate sighandlers, see
3159L<perlipc/"Signals">. See also "Process terminated by SIGTERM/SIGINT"
fecfaeb8 3160in L<perlos2>.
a0d0e21e 3161
3fe9a6f1 3162=item Prototype mismatch: %s vs %s
4633a7c4 3163
9a0b3859 3164(S prototype) The subroutine being declared or defined had previously been
be771a83 3165declared or defined with a different function prototype.
4633a7c4 3166
ed9aa3b7
SG
3167=item Prototype not terminated
3168
2a6fd447 3169(F) You've omitted the closing parenthesis in a function prototype
ed9aa3b7
SG
3170definition.
3171
96ebfdd7
RK
3172=item Quantifier follows nothing in regex; marked by <-- HERE in m/%s/
3173
3174(F) You started a regular expression with a quantifier. Backslash it if you
3175meant it literally. The <-- HERE shows in the regular expression about
3176where the problem was discovered. See L<perlre>.
3177
49704364 3178=item Quantifier in {,} bigger than %d in regex; marked by <-- HERE in m/%s/
9baa0206 3179
b45f050a 3180(F) There is currently a limit to the size of the min and max values of the
7253e4e3 3181{min,max} construct. The <-- HERE shows in the regular expression about where
b45f050a 3182the problem was discovered. See L<perlre>.
9baa0206 3183
49704364 3184=item Quantifier unexpected on zero-length expression; marked by <-- HERE in m/%s/
9baa0206 3185
b45f050a
JF
3186(W regexp) You applied a regular expression quantifier in a place where
3187it makes no sense, such as on a zero-width assertion. Try putting the
3188quantifier inside the assertion instead. For example, the way to match
3189"abc" provided that it is followed by three repetitions of "xyz" is
3190C</abc(?=(?:xyz){3})/>, not C</abc(?=xyz){3}/>.
9baa0206 3191
7253e4e3
RK
3192The <-- HERE shows in the regular expression about where the problem was
3193discovered.
3194
89ea2908
GA
3195=item Range iterator outside integer range
3196
3197(F) One (or both) of the numeric arguments to the range operator ".."
3198are outside the range which can be represented by integers internally.
be771a83
GS
3199One possible workaround is to force Perl to use magical string increment
3200by prepending "0" to your numbers.
89ea2908 3201
96ebfdd7
RK
3202=item readline() on closed filehandle %s
3203
3204(W closed) The filehandle you're reading from got itself closed sometime
3205before now. Check your control flow.
3206
b5fe5ca2
SR
3207=item read() on closed filehandle %s
3208
3209(W closed) You tried to read from a closed filehandle.
3210
3211=item read() on unopened filehandle %s
3212
3213(W unopened) You tried to read from a filehandle that was never opened.
3214
6df41af2
GS
3215=item Reallocation too large: %lx
3216
3217(F) You can't allocate more than 64K on an MS-DOS machine.
3218
4ad56ec9
IZ
3219=item realloc() of freed memory ignored
3220
be771a83
GS
3221(S malloc) An internal routine called realloc() on something that had
3222already been freed.
4ad56ec9 3223
a0d0e21e
LW
3224=item Recompile perl with B<-D>DEBUGGING to use B<-D> switch
3225
be771a83
GS
3226(F debugging) You can't use the B<-D> option unless the code to produce
3227the desired output is compiled into Perl, which entails some overhead,
a0d0e21e
LW
3228which is why it's currently left out of your copy.
3229
3e0ccd42 3230=item Recursive inheritance detected in package '%s'
a0d0e21e
LW
3231
3232(F) More than 100 levels of inheritance were used. Probably indicates
3233an unintended loop in your inheritance hierarchy.
3234
7a4340ed 3235=item Recursive inheritance detected while looking for method %s
3e0ccd42 3236
be771a83
GS
3237(F) More than 100 levels of inheritance were encountered while invoking
3238a method. Probably indicates an unintended loop in your inheritance
3239hierarchy.
3e0ccd42 3240
1930e939
TP
3241=item Reference found where even-sized list expected
3242
be771a83
GS
3243(W misc) You gave a single reference where Perl was expecting a list
3244with an even number of elements (for assignment to a hash). This usually
3245means that you used the anon hash constructor when you meant to use
3246parens. In any case, a hash requires key/value B<pairs>.
7b8d334a
GS
3247
3248 %hash = { one => 1, two => 2, }; # WRONG
3249 %hash = [ qw/ an anon array / ]; # WRONG
3250 %hash = ( one => 1, two => 2, ); # right
3251 %hash = qw( one 1 two 2 ); # also fine
3252
810b8aa5
GS
3253=item Reference is already weak
3254
e476b1b5 3255(W misc) You have attempted to weaken a reference that is already weak.
810b8aa5
GS
3256Doing so has no effect.
3257
a0d0e21e
LW
3258=item Reference miscount in sv_replace()
3259
be771a83
GS
3260(W internal) The internal sv_replace() function was handed a new SV with
3261a reference count of other than 1.
a0d0e21e 3262
49704364 3263=item Reference to nonexistent group in regex; marked by <-- HERE in m/%s/
b45f050a
JF
3264
3265(F) You used something like C<\7> in your regular expression, but there are
3266not at least seven sets of capturing parentheses in the expression. If you
3267wanted to have the character with value 7 inserted into the regular expression,
3268prepend a zero to make the number at least two digits: C<\07>
9baa0206 3269
7253e4e3 3270The <-- HERE shows in the regular expression about where the problem was
b45f050a 3271discovered.
9baa0206 3272
a0d0e21e
LW
3273=item regexp memory corruption
3274
3275(P) The regular expression engine got confused by what the regular
3276expression compiler gave it.
3277
b45f050a 3278=item Regexp out of space
a0d0e21e 3279
be771a83
GS
3280(P) A "can't happen" error, because safemalloc() should have caught it
3281earlier.
a0d0e21e 3282
a1b95068
LW
3283=item Repeated format line will never terminate (~~ and @# incompatible)
3284
3285(F) Your format containes the ~~ repeat-until-blank sequence and a
3286numeric field that will never go blank so that the repetition never
3287terminates. You might use ^# instead. See L<perlform>.
3288
a0d0e21e
LW
3289=item Reversed %s= operator
3290
be771a83
GS
3291(W syntax) You wrote your assignment operator backwards. The = must
3292always comes last, to avoid ambiguity with subsequent unary operators.
a0d0e21e
LW
3293
3294=item Runaway format
3295
3296(F) Your format contained the ~~ repeat-until-blank sequence, but it
3297produced 200 lines at once, and the 200th line looked exactly like the
3298199th line. Apparently you didn't arrange for the arguments to exhaust
3299themselves, either by using ^ instead of @ (for scalar variables), or by
3300shifting or popping (for array variables). See L<perlform>.
3301
96ebfdd7
RK
3302=item Scalars leaked: %d
3303
3304(P) Something went wrong in Perl's internal bookkeeping of scalars:
3305not all scalar variables were deallocated by the time Perl exited.
3306What this usually indicates is a memory leak, which is of course bad,
3307especially if the Perl program is intended to be long-running.
3308
a0d0e21e
LW
3309=item Scalar value @%s[%s] better written as $%s[%s]
3310
be771a83
GS
3311(W syntax) You've used an array slice (indicated by @) to select a
3312single element of an array. Generally it's better to ask for a scalar
3313value (indicated by $). The difference is that C<$foo[&bar]> always
3314behaves like a scalar, both when assigning to it and when evaluating its
3315argument, while C<@foo[&bar]> behaves like a list when you assign to it,
3316and provides a list context to its subscript, which can do weird things
3317if you're expecting only one subscript.
a0d0e21e 3318
748a9306 3319On the other hand, if you were actually hoping to treat the array
5f05dabc 3320element as a list, you need to look into how references work, because
748a9306
LW
3321Perl will not magically convert between scalars and lists for you. See
3322L<perlref>.
3323
a6006777
PP
3324=item Scalar value @%s{%s} better written as $%s{%s}
3325
75b44862 3326(W syntax) You've used a hash slice (indicated by @) to select a single
be771a83
GS
3327element of a hash. Generally it's better to ask for a scalar value
3328(indicated by $). The difference is that C<$foo{&bar}> always behaves
3329like a scalar, both when assigning to it and when evaluating its
3330argument, while C<@foo{&bar}> behaves like a list when you assign to it,
3331and provides a list context to its subscript, which can do weird things
3332if you're expecting only one subscript.
3333
3334On the other hand, if you were actually hoping to treat the hash element
3335as a list, you need to look into how references work, because Perl will
3336not magically convert between scalars and lists for you. See
a6006777
PP
3337L<perlref>.
3338
a0d0e21e
LW
3339=item Script is not setuid/setgid in suidperl
3340
54310121
PP
3341(F) Oddly, the suidperl program was invoked on a script without a setuid
3342or setgid bit set. This doesn't make much sense.
a0d0e21e
LW
3343
3344=item Search pattern not terminated
3345
3346(F) The lexer couldn't find the final delimiter of a // or m{}
3347construct. Remember that bracketing delimiters count nesting level.
fb73857a 3348Missing the leading C<$> from a variable C<$m> may cause this error.
a0d0e21e 3349
0cb1bcd7 3350Note that since Perl 5.9.0 a // can also be the I<defined-or>
5d9c98cd
JH
3351construct, not just the empty search pattern. Therefore code written
3352in Perl 5.9.0 or later that uses the // as the I<defined-or> can be
3353misparsed by pre-5.9.0 Perls as a non-terminated search pattern.
3354
9ddeeac9 3355=item %sseek() on unopened filehandle
a0d0e21e 3356
be771a83
GS
3357(W unopened) You tried to use the seek() or sysseek() function on a
3358filehandle that was either never opened or has since been closed.
a0d0e21e
LW
3359
3360=item select not implemented
3361
3362(F) This machine doesn't implement the select() system call.
3363
ae21d580 3364=item Self-ties of arrays and hashes are not supported
68a4a7e4 3365
ae21d580
JH
3366(F) Self-ties are of arrays and hashes are not supported in
3367the current implementation.
68a4a7e4 3368
6df41af2 3369=item Semicolon seems to be missing
a0d0e21e 3370
75b44862
GS
3371(W semicolon) A nearby syntax error was probably caused by a missing
3372semicolon, or possibly some other missing operator, such as a comma.
a0d0e21e
LW
3373
3374=item semi-panic: attempt to dup freed string
3375
be771a83
GS
3376(S internal) The internal newSVsv() routine was called to duplicate a
3377scalar that had previously been marked as free.
a0d0e21e 3378
6df41af2 3379=item sem%s not implemented
a0d0e21e 3380
6df41af2 3381(F) You don't have System V semaphore IPC on your system.
a0d0e21e 3382
69282e91 3383=item send() on closed socket %s
a0d0e21e 3384
be771a83 3385(W closed) The socket you're sending to got itself closed sometime
c289d2f7 3386before now. Check your control flow.
a0d0e21e 3387
7253e4e3 3388=item Sequence (? incomplete in regex; marked by <-- HERE in m/%s/
7b8d334a 3389
7253e4e3 3390(F) A regular expression ended with an incomplete extension (?. The <-- HERE
b45f050a 3391shows in the regular expression about where the problem was discovered. See
be771a83 3392L<perlre>.
1b1626e4 3393
49704364 3394=item Sequence (?%s...) not implemented in regex; marked by <-- HERE in m/%s/
a0d0e21e 3395