This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
The "Setuid script not plain file" error wasn't documented.
[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
1db89ea5
BS
1058=item Can't use anonymous symbol table for method lookup
1059
e27ad1f2 1060(F) The internal routine that does method lookup was handed a symbol
1db89ea5
BS
1061table that doesn't have a name. Symbol tables can become anonymous
1062for example by undefining stashes: C<undef %Some::Package::>.
1063
96ebfdd7
RK
1064=item Can't use an undefined value as %s reference
1065
1066(F) A value used as either a hard reference or a symbolic reference must
1067be a defined value. This helps to delurk some insidious errors.
1068
6df41af2
GS
1069=item Can't use bareword ("%s") as %s ref while "strict refs" in use
1070
be771a83
GS
1071(F) Only hard references are allowed by "strict refs". Symbolic
1072references are disallowed. See L<perlref>.
6df41af2 1073
90b75b61 1074=item Can't use %! because Errno.pm is not available
1d2dff63
GS
1075
1076(F) The first time the %! hash is used, perl automatically loads the
1077Errno.pm module. The Errno module is expected to tie the %! hash to
1078provide symbolic names for C<$!> errno values.
1079
1109a392
MHM
1080=item Can't use both '<' and '>' after type '%c' in %s
1081
1082(F) A type cannot be forced to have both big-endian and little-endian
1083byte-order at the same time, so this combination of modifiers is not
1084allowed. See L<perlfunc/pack>.
1085
6df41af2
GS
1086=item Can't use %s for loop variable
1087
be771a83
GS
1088(F) Only a simple scalar variable may be used as a loop variable on a
1089foreach.
6df41af2
GS
1090
1091=item Can't use global %s in "my"
1092
be771a83
GS
1093(F) You tried to declare a magical variable as a lexical variable. This
1094is not allowed, because the magic can be tied to only one location
1095(namely the global variable) and it would be incredibly confusing to
1096have variables in your program that looked like magical variables but
6df41af2
GS
1097weren't.
1098
6d3b25aa
RGS
1099=item Can't use '%c' in a group with different byte-order in %s
1100
1101(F) You attempted to force a different byte-order on a type
1102that is already inside a group with a byte-order modifier.
1103For example you cannot force little-endianness on a type that
1104is inside a big-endian group.
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
6d3b25aa
RGS
1328=item Deprecated use of my() in false conditional
1329
1330(D deprecated) You used a declaration similar to C<my $x if 0>.
1331There has been a long-standing bug in Perl that causes a lexical variable
1332not to be cleared at scope exit when its declaration includes a false
1333conditional. Some people have exploited this bug to achieve a kind of
1334static variable. Since we intend to fix this bug, we don't want people
1335relying on this behavior. You can achieve a similar static effect by
1336declaring the variable in a separate block outside the function, eg
1337
1338 sub f { my $x if 0; return $x++ }
1339
1340becomes
1341
1342 { my $x; sub f { return $x++ } }
1343
500ab966
RGS
1344=item DESTROY created new reference to dead object '%s'
1345
1346(F) A DESTROY() method created a new reference to the object which is
1347just being DESTROYed. Perl is confused, and prefers to abort rather than
1348to create a dangling reference.
1349
3cdd684c
TP
1350=item Did not produce a valid header
1351
1352See Server error.
1353
6df41af2
GS
1354=item %s did not return a true value
1355
1356(F) A required (or used) file must return a true value to indicate that
1357it compiled correctly and ran its initialization code correctly. It's
1358traditional to end such a file with a "1;", though any true value would
1359do. See L<perlfunc/require>.
1360
cc507455 1361=item (Did you mean &%s instead?)
4633a7c4 1362
be771a83
GS
1363(W) You probably referred to an imported subroutine &FOO as $FOO or some
1364such.
4633a7c4 1365
cc507455 1366=item (Did you mean "local" instead of "our"?)
33633739 1367
be771a83
GS
1368(W misc) Remember that "our" does not localize the declared global
1369variable. You have declared it again in the same lexical scope, which
1370seems superfluous.
33633739 1371
cc507455 1372=item (Did you mean $ or @ instead of %?)
a0d0e21e 1373
be771a83
GS
1374(W) You probably said %hash{$key} when you meant $hash{$key} or
1375@hash{@keys}. On the other hand, maybe you just meant %hash and got
1376carried away.
748a9306 1377
7e1af8bc 1378=item Died
5f05dabc
PP
1379
1380(F) You passed die() an empty string (the equivalent of C<die "">) or
1381you called it with no args and both C<$@> and C<$_> were empty.
1382
3cdd684c
TP
1383=item Document contains no data
1384
1385See Server error.
1386
62658f4d
PM
1387=item %s does not define %s::VERSION--version check failed
1388
1389(F) You said something like "use Module 42" but the Module did not
1390define a C<$VERSION.>
1391
49704364
LW
1392=item '/' does not take a repeat count
1393
1394(F) You cannot put a repeat count of any kind right after the '/' code.
1395See L<perlfunc/pack>.
1396
a0d0e21e
LW
1397=item Don't know how to handle magic of type '%s'
1398
1399(P) The internal handling of magical variables has been cursed.
1400
1401=item do_study: out of memory
1402
1403(P) This should have been caught by safemalloc() instead.
1404
6df41af2
GS
1405=item (Do you need to predeclare %s?)
1406
56da5a46
RGS
1407(S syntax) This is an educated guess made in conjunction with the message
1408"%s found where operator expected". It often means a subroutine or module
6df41af2
GS
1409name is being referenced that hasn't been declared yet. This may be
1410because of ordering problems in your file, or because of a missing
be771a83
GS
1411"sub", "package", "require", or "use" statement. If you're referencing
1412something that isn't defined yet, you don't actually have to define the
1413subroutine or package before the current location. You can use an empty
1414"sub foo;" or "package FOO;" to enter a "forward" declaration.
6df41af2 1415
ac206dc8
RGS
1416=item dump() better written as CORE::dump()
1417
1418(W misc) You used the obsolescent C<dump()> built-in function, without fully
1419qualifying it as C<CORE::dump()>. Maybe it's a typo. See L<perlfunc/dump>.
1420
a0d0e21e
LW
1421=item Duplicate free() ignored
1422
be771a83
GS
1423(S malloc) An internal routine called free() on something that had
1424already been freed.
a0d0e21e 1425
1109a392
MHM
1426=item Duplicate modifier '%c' after '%c' in %s
1427
1428(W) You have applied the same modifier more than once after a type
1429in a pack template. See L<perlfunc/pack>.
1430
4633a7c4
LW
1431=item elseif should be elsif
1432
56da5a46
RGS
1433(S syntax) There is no keyword "elseif" in Perl because Larry thinks it's
1434ugly. Your code will be interpreted as an attempt to call a method named
be771a83 1435"elseif" for the class returned by the following block. This is
4633a7c4
LW
1436unlikely to be what you want.
1437
ab13f0c7
JH
1438=item Empty %s
1439
af6f566e
HS
1440(F) C<\p> and C<\P> are used to introduce a named Unicode property, as
1441described in L<perlunicode> and L<perlre>. You used C<\p> or C<\P> in
1442a regular expression without specifying the property name.
ab13f0c7 1443
85ab1d1d 1444=item entering effective %s failed
5ff3f7a4 1445
85ab1d1d 1446(F) While under the C<use filetest> pragma, switching the real and
5ff3f7a4
GS
1447effective uids or gids failed.
1448
c038024b
RGS
1449=item %ENV is aliased to %s
1450
1451(F) You're running under taint mode, and the C<%ENV> variable has been
1452aliased to another hash, so it doesn't reflect anymore the state of the
1453program's environment. This is potentially insecure.
1454
748a9306
LW
1455=item Error converting file specification %s
1456
5f05dabc 1457(F) An error peculiar to VMS. Because Perl may have to deal with file
748a9306 1458specifications in either VMS or Unix syntax, it converts them to a
be771a83
GS
1459single form when it must operate on them directly. Either you've passed
1460an invalid file specification to Perl, or you've found a case the
1461conversion routines don't handle. Drat.
748a9306 1462
e4d48cc9
GS
1463=item %s: Eval-group in insecure regular expression
1464
be771a83
GS
1465(F) Perl detected tainted data when trying to compile a regular
1466expression that contains the C<(?{ ... })> zero-width assertion, which
1467is unsafe. See L<perlre/(?{ code })>, and L<perlsec>.
e4d48cc9 1468
e4d48cc9
GS
1469=item %s: Eval-group not allowed at run time
1470
be771a83
GS
1471(F) Perl tried to compile a regular expression containing the
1472C<(?{ ... })> zero-width assertion at run time, as it would when the
1473pattern contains interpolated values. Since that is a security risk, it
1474is not allowed. If you insist, you may still do this by explicitly
1475building the pattern from an interpolated string at run time and using
1476that in an eval(). See L<perlre/(?{ code })>.
e4d48cc9 1477
6df41af2
GS
1478=item %s: Eval-group not allowed, use re 'eval'
1479
be771a83
GS
1480(F) A regular expression contained the C<(?{ ... })> zero-width
1481assertion, but that construct is only allowed when the C<use re 'eval'>
1482pragma is in effect. See L<perlre/(?{ code })>.
6df41af2 1483
fc36a67e
PP
1484=item Excessively long <> operator
1485
1486(F) The contents of a <> operator may not exceed the maximum size of a
1487Perl identifier. If you're just trying to glob a long list of
1488filenames, try using the glob() operator, or put the filenames into a
1489variable and glob that.
1490
ed9aa3b7
SG
1491=item exec? I'm not *that* kind of operating system
1492
1493(F) The C<exec> function is not implemented in MacPerl. See L<perlport>.
1494
f86702cc 1495=item Execution of %s aborted due to compilation errors
a0d0e21e
LW
1496
1497(F) The final summary message when a Perl compilation fails.
1498
1499=item Exiting eval via %s
1500
be771a83
GS
1501(W exiting) You are exiting an eval by unconventional means, such as a
1502goto, or a loop control statement.
e476b1b5
GS
1503
1504=item Exiting format via %s
1505
9a2ff54b 1506(W exiting) You are exiting a format by unconventional means, such as a
be771a83 1507goto, or a loop control statement.
a0d0e21e 1508
0a753a76
PP
1509=item Exiting pseudo-block via %s
1510
be771a83
GS
1511(W exiting) You are exiting a rather special block construct (like a
1512sort block or subroutine) by unconventional means, such as a goto, or a
1513loop control statement. See L<perlfunc/sort>.
0a753a76 1514
a0d0e21e
LW
1515=item Exiting subroutine via %s
1516
be771a83
GS
1517(W exiting) You are exiting a subroutine by unconventional means, such
1518as a goto, or a loop control statement.
a0d0e21e
LW
1519
1520=item Exiting substitution via %s
1521
be771a83
GS
1522(W exiting) You are exiting a substitution by unconventional means, such
1523as a return, a goto, or a loop control statement.
a0d0e21e 1524
7b8d334a
GS
1525=item Explicit blessing to '' (assuming package main)
1526
be771a83
GS
1527(W misc) You are blessing a reference to a zero length string. This has
1528the effect of blessing the reference into the package main. This is
1529usually not what you want. Consider providing a default target package,
1530e.g. bless($ref, $p || 'MyPackage');
7b8d334a 1531
6df41af2
GS
1532=item %s: Expression syntax
1533
be771a83
GS
1534(A) You've accidentally run your script through B<csh> instead of Perl.
1535Check the #! line, or manually feed your script into Perl yourself.
6df41af2
GS
1536
1537=item %s failed--call queue aborted
1538
1539(F) An untrapped exception was raised while executing a CHECK, INIT, or
1540END subroutine. Processing of the remainder of the queue of such
1541routines has been prematurely ended.
1542
7253e4e3 1543=item False [] range "%s" in regex; marked by <-- HERE in m/%s/
73b437c8 1544
be771a83 1545(W regexp) A character class range must start and end at a literal
7253e4e3
RK
1546character, not another character class like C<\d> or C<[:alpha:]>. The "-"
1547in your false range is interpreted as a literal "-". Consider quoting the
1548"-", "\-". The <-- HERE shows in the regular expression about where the
1549problem was discovered. See L<perlre>.
73b437c8 1550
748a9306 1551=item Fatal VMS error at %s, line %d
a0d0e21e 1552
be771a83
GS
1553(P) An error peculiar to VMS. Something untoward happened in a VMS
1554system service or RTL routine; Perl's exit status should provide more
1555details. The filename in "at %s" and the line number in "line %d" tell
1556you which section of the Perl source code is distressed.
a0d0e21e
LW
1557
1558=item fcntl is not implemented
1559
1560(F) Your machine apparently doesn't implement fcntl(). What is this, a
1561PDP-11 or something?
1562
af8c498a 1563=item Filehandle %s opened only for input
a0d0e21e 1564
6c8d78fb
HS
1565(W io) You tried to write on a read-only filehandle. If you intended
1566it to be a read-write filehandle, you needed to open it with "+<" or
1567"+>" or "+>>" instead of with "<" or nothing. If you intended only to
1568write the file, use ">" or ">>". See L<perlfunc/open>.
a0d0e21e 1569
af8c498a 1570=item Filehandle %s opened only for output
a0d0e21e 1571
6c8d78fb
HS
1572(W io) You tried to read from a filehandle opened only for writing, If
1573you intended it to be a read/write filehandle, you needed to open it
be771a83
GS
1574with "+<" or "+>" or "+>>" instead of with "<" or nothing. If you
1575intended only to read from the file, use "<". See L<perlfunc/open>.
6c8d78fb
HS
1576Another possibility is that you attempted to open filedescriptor 0
1577(also known as STDIN) for output (maybe you closed STDIN earlier?).
97828cef
RGS
1578
1579=item Filehandle %s reopened as %s only for input
1580
1581(W io) You opened for reading a filehandle that got the same filehandle id
1582as STDOUT or STDERR. This occured because you closed STDOUT or STDERR
1583previously.
1584
1585=item Filehandle STDIN reopened as %s only for output
1586
1587(W io) You opened for writing a filehandle that got the same filehandle id
1588as STDIN. This occured because you closed STDIN previously.
a0d0e21e
LW
1589
1590=item Final $ should be \$ or $name
1591
1592(F) You must now decide whether the final $ in a string was meant to be
be771a83
GS
1593a literal dollar sign, or was meant to introduce a variable name that
1594happens to be missing. So you have to put either the backslash or the
1595name.
a0d0e21e 1596
56e90b21
GS
1597=item flock() on closed filehandle %s
1598
be771a83 1599(W closed) The filehandle you're attempting to flock() got itself closed
c289d2f7 1600some time before now. Check your control flow. flock() operates on
be771a83
GS
1601filehandles. Are you attempting to call flock() on a dirhandle by the
1602same name?
56e90b21 1603
6df41af2
GS
1604=item Format not terminated
1605
1606(F) A format must be terminated by a line with a solitary dot. Perl got
1607to the end of your file without finding such a line.
1608
a0d0e21e
LW
1609=item Format %s redefined
1610
e476b1b5 1611(W redefine) You redefined a format. To suppress this warning, say
a0d0e21e
LW
1612
1613 {
271595cc 1614 no warnings 'redefine';
a0d0e21e
LW
1615 eval "format NAME =...";
1616 }
1617
a0d0e21e
LW
1618=item Found = in conditional, should be ==
1619
e476b1b5 1620(W syntax) You said
a0d0e21e
LW
1621
1622 if ($foo = 123)
1623
1624when you meant
1625
1626 if ($foo == 123)
1627
1628(or something like that).
1629
6df41af2
GS
1630=item %s found where operator expected
1631
56da5a46
RGS
1632(S syntax) The Perl lexer knows whether to expect a term or an operator.
1633If it sees what it knows to be a term when it was expecting to see an
be771a83
GS
1634operator, it gives you this warning. Usually it indicates that an
1635operator or delimiter was omitted, such as a semicolon.
6df41af2 1636
a0d0e21e
LW
1637=item gdbm store returned %d, errno %d, key "%s"
1638
1639(S) A warning from the GDBM_File extension that a store failed.
1640
1641=item gethostent not implemented
1642
1643(F) Your C library apparently doesn't implement gethostent(), probably
1644because if it did, it'd feel morally obligated to return every hostname
1645on the Internet.
1646
69282e91 1647=item get%sname() on closed socket %s
a0d0e21e 1648
be771a83
GS
1649(W closed) You tried to get a socket or peer socket name on a closed
1650socket. Did you forget to check the return value of your socket() call?
a0d0e21e 1651
748a9306
LW
1652=item getpwnam returned invalid UIC %#o for user "%s"
1653
1654(S) A warning peculiar to VMS. The call to C<sys$getuai> underlying the
1655C<getpwnam> operator returned an invalid UIC.
1656
6df41af2
GS
1657=item getsockopt() on closed socket %s
1658
be771a83
GS
1659(W closed) You tried to get a socket option on a closed socket. Did you
1660forget to check the return value of your socket() call? See
6df41af2
GS
1661L<perlfunc/getsockopt>.
1662
1663=item Global symbol "%s" requires explicit package name
1664
1665(F) You've said "use strict vars", which indicates that all variables
1666must either be lexically scoped (using "my"), declared beforehand using
1667"our", or explicitly qualified to say which package the global variable
1668is in (using "::").
1669
e476b1b5
GS
1670=item glob failed (%s)
1671
be771a83
GS
1672(W glob) Something went wrong with the external program(s) used for
1673C<glob> and C<< <*.c> >>. Usually, this means that you supplied a
1674C<glob> pattern that caused the external program to fail and exit with a
1675nonzero status. If the message indicates that the abnormal exit
1676resulted in a coredump, this may also mean that your csh (C shell) is
1677broken. If so, you should change all of the csh-related variables in
1678config.sh: If you have tcsh, make the variables refer to it as if it
1679were csh (e.g. C<full_csh='/usr/bin/tcsh'>); otherwise, make them all
1680empty (except that C<d_csh> should be C<'undef'>) so that Perl will
1681think csh is missing. In either case, after editing config.sh, run
75b44862 1682C<./Configure -S> and rebuild Perl.
e476b1b5 1683
a0d0e21e
LW
1684=item Glob not terminated
1685
1686(F) The lexer saw a left angle bracket in a place where it was expecting
be771a83
GS
1687a term, so it's looking for the corresponding right angle bracket, and
1688not finding it. Chances are you left some needed parentheses out
1689earlier in the line, and you really meant a "less than".
a0d0e21e 1690
6df41af2 1691=item Got an error from DosAllocMem
a0d0e21e 1692
6df41af2
GS
1693(P) An error peculiar to OS/2. Most probably you're using an obsolete
1694version of Perl, and this should not happen anyway.
a0d0e21e
LW
1695
1696=item goto must have label
1697
1698(F) Unlike with "next" or "last", you're not allowed to goto an
1699unspecified destination. See L<perlfunc/goto>.
1700
49704364 1701=item ()-group starts with a count
18529408 1702
49704364 1703(F) A ()-group started with a count. A count is
18529408 1704supposed to follow something: a template character or a ()-group.
49704364 1705 See L<perlfunc/pack>.
18529408 1706
6df41af2
GS
1707=item %s had compilation errors
1708
1709(F) The final summary message when a C<perl -c> fails.
1710
a0d0e21e
LW
1711=item Had to create %s unexpectedly
1712
be771a83
GS
1713(S internal) A routine asked for a symbol from a symbol table that ought
1714to have existed already, but for some reason it didn't, and had to be
1715created on an emergency basis to prevent a core dump.
a0d0e21e
LW
1716
1717=item Hash %%s missing the % in argument %d of %s()
1718
be771a83
GS
1719(D deprecated) Really old Perl let you omit the % on hash names in some
1720spots. This is now heavily deprecated.
a0d0e21e 1721
6df41af2
GS
1722=item %s has too many errors
1723
1724(F) The parser has given up trying to parse the program after 10 errors.
1725Further error messages would likely be uninformative.
1726
252aa082
JH
1727=item Hexadecimal number > 0xffffffff non-portable
1728
e476b1b5 1729(W portable) The hexadecimal number you specified is larger than 2**32-1
9e24b6e2
JH
1730(4294967295) and therefore non-portable between systems. See
1731L<perlport> for more on portability concerns.
252aa082 1732
8903cb82
PP
1733=item Identifier too long
1734
1735(F) Perl limits identifiers (names for variables, functions, etc.) to
fc36a67e 1736about 250 characters for simple names, and somewhat more for compound
be771a83
GS
1737names (like C<$A::B>). You've exceeded Perl's limits. Future versions
1738of Perl are likely to eliminate these arbitrary limitations.
8903cb82 1739
6df41af2 1740=item Illegal binary digit %s
f675dbe5 1741
6df41af2 1742(F) You used a digit other than 0 or 1 in a binary number.
f675dbe5 1743
6df41af2 1744=item Illegal binary digit %s ignored
a0d0e21e 1745
be771a83
GS
1746(W digit) You may have tried to use a digit other than 0 or 1 in a
1747binary number. Interpretation of the binary number stopped before the
1748offending digit.
a0d0e21e 1749
4fdae800
PP
1750=item Illegal character %s (carriage return)
1751
d5898338 1752(F) Perl normally treats carriage returns in the program text as it
be771a83
GS
1753would any other whitespace, which means you should never see this error
1754when Perl was built using standard options. For some reason, your
1755version of Perl appears to have been built without this support. Talk
1756to your Perl administrator.
4fdae800 1757
d37a9538
ST
1758=item Illegal character in prototype for %s : %s
1759
420cdfc1 1760(W syntax) An illegal character was found in a prototype declaration. Legal
d37a9538
ST
1761characters in prototypes are $, @, %, *, ;, [, ], &, and \.
1762
904d85c5
RGS
1763=item Illegal declaration of anonymous subroutine
1764
1765(F) When using the C<sub> keyword to construct an anonymous subroutine,
1766you must always specify a block of code. See L<perlsub>.
1767
8e742a20
MHM
1768=item Illegal declaration of subroutine %s
1769
1770(F) A subroutine was not declared correctly. See L<perlsub>.
1771
a0d0e21e
LW
1772=item Illegal division by zero
1773
be771a83
GS
1774(F) You tried to divide a number by 0. Either something was wrong in
1775your logic, or you need to put a conditional in to guard against
1776meaningless input.
a0d0e21e 1777
6df41af2
GS
1778=item Illegal hexadecimal digit %s ignored
1779
be771a83
GS
1780(W digit) You may have tried to use a character other than 0 - 9 or
1781A - F, a - f in a hexadecimal number. Interpretation of the hexadecimal
1782number stopped before the illegal character.
6df41af2 1783
a0d0e21e
LW
1784=item Illegal modulus zero
1785
be771a83
GS
1786(F) You tried to divide a number by 0 to get the remainder. Most
1787numbers don't take to this kindly.
a0d0e21e 1788
6df41af2 1789=item Illegal number of bits in vec
399388f4 1790
6df41af2
GS
1791(F) The number of bits in vec() (the third argument) must be a power of
1792two from 1 to 32 (or 64, if your platform supports that).
399388f4
GS
1793
1794=item Illegal octal digit %s
a0d0e21e 1795
d1be9408 1796(F) You used an 8 or 9 in an octal number.
a0d0e21e 1797
399388f4 1798=item Illegal octal digit %s ignored
748a9306 1799
d1be9408 1800(W digit) You may have tried to use an 8 or 9 in an octal number.
75b44862 1801Interpretation of the octal number stopped before the 8 or 9.
748a9306 1802
6df41af2 1803=item Illegal switch in PERL5OPT: %s
6ff81951 1804
6df41af2 1805(X) The PERL5OPT environment variable may only be used to set the
1c4db469 1806following switches: B<-[DIMUdmtw]>.
6ff81951 1807
6df41af2 1808=item Ill-formed CRTL environ value "%s"
81e118e0 1809
75b44862 1810(W internal) A warning peculiar to VMS. Perl tried to read the CRTL's
be771a83
GS
1811internal environ array, and encountered an element without the C<=>
1812delimiter used to separate keys from values. The element is ignored.
09bef843 1813
6df41af2 1814=item Ill-formed message in prime_env_iter: |%s|
54310121 1815
be771a83
GS
1816(W internal) A warning peculiar to VMS. Perl tried to read a logical
1817name or CLI symbol definition when preparing to iterate over %ENV, and
1818didn't see the expected delimiter between key and value, so the line was
1819ignored.
54310121 1820
8fa7688f
SF
1821=item Impossible to activate assertion call
1822
1823(W assertions) You're calling an assertion function in a block that is
1824not under the control of the C<assertions> pragma.
1825
6df41af2 1826=item (in cleanup) %s
9607fc9c 1827
be771a83
GS
1828(W misc) This prefix usually indicates that a DESTROY() method raised
1829the indicated exception. Since destructors are usually called by the
1830system at arbitrary points during execution, and often a vast number of
1831times, the warning is issued only once for any number of failures that
1832would otherwise result in the same message being repeated.
6df41af2 1833
be771a83
GS
1834Failure of user callbacks dispatched using the C<G_KEEPERR> flag could
1835also result in this warning. See L<perlcall/G_KEEPERR>.
9607fc9c 1836
979699d9
JH
1837=item In EBCDIC the v-string components cannot exceed 2147483647
1838
1839(F) An error peculiar to EBCDIC. Internally, v-strings are stored as
1840Unicode code points, and encoded in EBCDIC as UTF-EBCDIC. The UTF-EBCDIC
1841encoding is limited to code points no larger than 2147483647 (0x7FFFFFFF).
1842
a0d0e21e
LW
1843=item Insecure dependency in %s
1844
8b1a09fc 1845(F) You tried to do something that the tainting mechanism didn't like.
be771a83
GS
1846The tainting mechanism is turned on when you're running setuid or
1847setgid, or when you specify B<-T> to turn it on explicitly. The
1848tainting mechanism labels all data that's derived directly or indirectly
1849from the user, who is considered to be unworthy of your trust. If any
1850such data is used in a "dangerous" operation, you get this error. See
1851L<perlsec> for more information.
a0d0e21e
LW
1852
1853=item Insecure directory in %s
1854
be771a83
GS
1855(F) You can't use system(), exec(), or a piped open in a setuid or
1856setgid script if C<$ENV{PATH}> contains a directory that is writable by
df98f984
RGS
1857the world. Also, the PATH must not contain any relative directory.
1858See L<perlsec>.
a0d0e21e 1859
62f468fc 1860=item Insecure $ENV{%s} while running %s
a0d0e21e
LW
1861
1862(F) You can't use system(), exec(), or a piped open in a setuid or
62f468fc 1863setgid script if any of C<$ENV{PATH}>, C<$ENV{IFS}>, C<$ENV{CDPATH}>,
332d5f78
SR
1864C<$ENV{ENV}>, C<$ENV{BASH_ENV}> or C<$ENV{TERM}> are derived from data
1865supplied (or potentially supplied) by the user. The script must set
1866the path to a known value, using trustworthy data. See L<perlsec>.
a0d0e21e 1867
a7ae9550
GS
1868=item Integer overflow in %s number
1869
75b44862 1870(W overflow) The hexadecimal, octal or binary number you have specified
be771a83
GS
1871either as a literal or as an argument to hex() or oct() is too big for
1872your architecture, and has been converted to a floating point number.
1873On a 32-bit architecture the largest hexadecimal, octal or binary number
9e24b6e2
JH
1874representable without overflow is 0xFFFFFFFF, 037777777777, or
18750b11111111111111111111111111111111 respectively. Note that Perl
1876transparently promotes all numbers to a floating point representation
1877internally--subject to loss of precision errors in subsequent
1878operations.
bbce6d69 1879
46314c13
JP
1880=item Integer overflow in version
1881
1882(F) Some portion of a version initialization is too large for the
1883size of integers for your architecture. This is not a warning
1884because there is no rational reason for a version to try and use a
1885element larger than typically 2**32. This is usually caused by
1886trying to use some odd mathematical operation as a version, like
1887100/9.
1888
7253e4e3 1889=item Internal disaster in regex; marked by <-- HERE in m/%s/
6df41af2
GS
1890
1891(P) Something went badly wrong in the regular expression parser.
7253e4e3 1892The <-- HERE shows in the regular expression about where the problem was
b45f050a
JF
1893discovered.
1894
748a9306
LW
1895=item Internal inconsistency in tracking vforks
1896
be771a83
GS
1897(S) A warning peculiar to VMS. Perl keeps track of the number of times
1898you've called C<fork> and C<exec>, to determine whether the current call
1899to C<exec> should affect the current script or a subprocess (see
1900L<perlvms/"exec LIST">). Somehow, this count has become scrambled, so
1901Perl is making a guess and treating this C<exec> as a request to
1902terminate the Perl script and execute the specified command.
748a9306 1903
7253e4e3 1904=item Internal urp in regex; marked by <-- HERE in m/%s/
b45f050a 1905
7253e4e3
RK
1906(P) Something went badly awry in the regular expression parser. The
1907<-- HERE shows in the regular expression about where the problem was
1908discovered.
a0d0e21e 1909
6df41af2
GS
1910=item %s (...) interpreted as function
1911
75b44862 1912(W syntax) You've run afoul of the rule that says that any list operator
be771a83 1913followed by parentheses turns into a function, with all the list
64977eb6 1914operators arguments found inside the parentheses. See
13a2d996 1915L<perlop/Terms and List Operators (Leftward)>.
6df41af2 1916
09bef843
SB
1917=item Invalid %s attribute: %s
1918
1919The indicated attribute for a subroutine or variable was not recognized
1920by Perl or by a user-supplied handler. See L<attributes>.
1921
1922=item Invalid %s attributes: %s
1923
be771a83
GS
1924The indicated attributes for a subroutine or variable were not
1925recognized by Perl or by a user-supplied handler. See L<attributes>.
09bef843 1926
c635e13b
PP
1927=item Invalid conversion in %s: "%s"
1928
be771a83
GS
1929(W printf) Perl does not understand the given format conversion. See
1930L<perlfunc/sprintf>.
c635e13b 1931
7253e4e3 1932=item Invalid [] range "%s" in regex; marked by <-- HERE in m/%s/
6df41af2
GS
1933
1934(F) The range specified in a character class had a minimum character
7253e4e3
RK
1935greater than the maximum character. One possibility is that you forgot the
1936C<{}> from your ending C<\x{}> - C<\x> without the curly braces can go only
1937up to C<ff>. The <-- HERE shows in the regular expression about where the
1938problem was discovered. See L<perlre>.
6df41af2 1939
d1573ac7 1940=item Invalid range "%s" in transliteration operator
c2e66d9e
GS
1941
1942(F) The range specified in the tr/// or y/// operator had a minimum
1943character greater than the maximum character. See L<perlop>.
1944
09bef843
SB
1945=item Invalid separator character %s in attribute list
1946
0120eecf 1947(F) Something other than a colon or whitespace was seen between the
be771a83
GS
1948elements of an attribute list. If the previous attribute had a
1949parenthesised parameter list, perhaps that list was terminated too soon.
1950See L<attributes>.
09bef843 1951
b4581f09
JH
1952=item Invalid separator character %s in PerlIO layer specification %s
1953
1954(W layer) When pushing layers onto the Perl I/O system, something other than a
1955colon or whitespace was seen between the elements of a layer list.
1956If the previous attribute had a parenthesised parameter list, perhaps that
1957list was terminated too soon.
1958
49704364 1959=item Invalid type '%s' in %s
96e4d5b1 1960
49704364
LW
1961(F) The given character is not a valid pack or unpack type.
1962See L<perlfunc/pack>.
1963(W) The given character is not a valid pack or unpack type but used to be
75b44862 1964silently ignored.
96e4d5b1 1965
46314c13
JP
1966=item Invalid version format (multiple underscores)
1967
1968(F) Versions may contain at most a single underscore, which signals
1969that the version is a beta release. See L<version> for the allowed
1970version formats.
1971
1972=item Invalid version format (underscores before decimal)
1973
1974(F) Versions may not contain decimals after the optional underscore.
1975See L<version> for the allowed version formats.
1976
a0d0e21e
LW
1977=item ioctl is not implemented
1978
1979(F) Your machine apparently doesn't implement ioctl(), which is pretty
1980strange for a machine that supports C.
1981
c289d2f7
JH
1982=item ioctl() on unopened %s
1983
1984(W unopened) You tried ioctl() on a filehandle that was never opened.
1985Check you control flow and number of arguments.
1986
363c40c4
SB
1987=item IO layers (like "%s") unavailable
1988
1989(F) Your Perl has not been configured to have PerlIO, and therefore
1990you cannot use IO layers. To have PerlIO Perl must be configured
1991with 'useperlio'.
1992
80cbd5ad
JH
1993=item IO::Socket::atmark not implemented on this architecture
1994
1995(F) Your machine doesn't implement the sockatmark() functionality,
1996neither as a system call or an ioctl call (SIOCATMARK).
1997
b4581f09
JH
1998=item $* is no longer supported
1999
2000(D deprecated) The special variable C<$*>, deprecated in older perls, has
2001been removed as of 5.9.0 and is no longer supported. You should use the
2002C<//m> and C<//s> regexp modifiers instead.
2003
6ad11d81
JH
2004=item `%s' is not a code reference
2005
04a80ee0
RGS
2006(W overload) The second (fourth, sixth, ...) argument of overload::constant
2007needs to be a code reference. Either an anonymous subroutine, or a reference
6ad11d81
JH
2008to a subroutine.
2009
2010=item `%s' is not an overloadable type
2011
04a80ee0
RGS
2012(W overload) You tried to overload a constant type the overload package is
2013unaware of.
6ad11d81 2014
a0d0e21e
LW
2015=item junk on end of regexp
2016
2017(P) The regular expression parser is confused.
2018
2019=item Label not found for "last %s"
2020
be771a83
GS
2021(F) You named a loop to break out of, but you're not currently in a loop
2022of that name, not even if you count where you were called from. See
2023L<perlfunc/last>.
a0d0e21e
LW
2024
2025=item Label not found for "next %s"
2026
2027(F) You named a loop to continue, but you're not currently in a loop of
2028that name, not even if you count where you were called from. See
2029L<perlfunc/last>.
2030
2031=item Label not found for "redo %s"
2032
2033(F) You named a loop to restart, but you're not currently in a loop of
2034that name, not even if you count where you were called from. See
2035L<perlfunc/last>.
2036
85ab1d1d 2037=item leaving effective %s failed
5ff3f7a4 2038
85ab1d1d 2039(F) While under the C<use filetest> pragma, switching the real and
5ff3f7a4
GS
2040effective uids or gids failed.
2041
49704364
LW
2042=item length/code after end of string in unpack
2043
2044(F) While unpacking, the string buffer was alread used up when an unpack
2045length/code combination tried to obtain more data. This results in
2046an undefined value for the length. See L<perlfunc/pack>.
2047
69282e91 2048=item listen() on closed socket %s
a0d0e21e 2049
be771a83
GS
2050(W closed) You tried to do a listen on a closed socket. Did you forget
2051to check the return value of your socket() call? See
2052L<perlfunc/listen>.
a0d0e21e 2053
49704364 2054=item Lookbehind longer than %d not implemented in regex; marked by <-- HERE in m/%s/
b45f050a
JF
2055
2056(F) There is currently a limit on the length of string which lookbehind can
7253e4e3
RK
2057handle. This restriction may be eased in a future release. The <-- HERE
2058shows in the regular expression about where the problem was discovered.
2e50fd82 2059
2f7da168
RK
2060=item lstat() on filehandle %s
2061
2062(W io) You tried to do an lstat on a filehandle. What did you mean
2063by that? lstat() makes sense only on filenames. (Perl did a fstat()
2064instead on the filehandle.)
2065
96ebfdd7
RK
2066=item Lvalue subs returning %s not implemented yet
2067
2068(F) Due to limitations in the current implementation, array and hash
2069values cannot be returned in subroutines used in lvalue context. See
2070L<perlsub/"Lvalue subroutines">.
2071
49704364
LW
2072=item Malformed integer in [] in pack
2073
2074(F) Between the brackets enclosing a numeric repeat count only digits
2075are permitted. See L<perlfunc/pack>.
2076
2077=item Malformed integer in [] in unpack
2078
2079(F) Between the brackets enclosing a numeric repeat count only digits
2080are permitted. See L<perlfunc/pack>.
2081
6df41af2
GS
2082=item Malformed PERLLIB_PREFIX
2083
2084(F) An error peculiar to OS/2. PERLLIB_PREFIX should be of the form
2085
2086 prefix1;prefix2
2087
2088or
6df41af2
GS
2089 prefix1 prefix2
2090
be771a83
GS
2091with nonempty prefix1 and prefix2. If C<prefix1> is indeed a prefix of
2092a builtin library search path, prefix2 is substituted. The error may
2093appear if components are not found, or are too long. See
fecfaeb8 2094"PERLLIB_PREFIX" in L<perlos2>.
6df41af2 2095
2f758a16
ST
2096=item Malformed prototype for %s: %s
2097
d37a9538
ST
2098(F) You tried to use a function with a malformed prototype. The
2099syntax of function prototypes is given a brief compile-time check for
2100obvious errors like invalid characters. A more rigorous check is run
2101when the function is called.
2f758a16 2102
ba210ebe
JH
2103=item Malformed UTF-8 character (%s)
2104
10749184 2105(W utf8) Perl detected something that didn't comply with UTF-8 encoding rules.
ba210ebe 2106
901b21bf
JH
2107One possible cause is that you read in data that you thought to be in
2108UTF-8 but it wasn't (it was for example legacy 8-bit data). Another
2109possibility is careless use of utf8::upgrade().
2110
dea0fc0b
JH
2111=item Malformed UTF-16 surrogate
2112
2113Perl thought it was reading UTF-16 encoded character data but while
2114doing it Perl met a malformed Unicode surrogate.
2115
49704364 2116=item %s matches null string many times in regex; marked by <-- HERE in m/%s/
6df41af2
GS
2117
2118(W regexp) The pattern you've specified would be an infinite loop if the
7253e4e3
RK
2119regular expression engine didn't specifically check for that. The <-- HERE
2120shows in the regular expression about where the problem was discovered.
2121See L<perlre>.
6df41af2 2122
25f58aea
PN
2123=item "%s" may clash with future reserved word
2124
2125(W) This warning may be due to running a perl5 script through a perl4
2126interpreter, especially if the word that is being warned about is
2127"use" or "my".
2128
49704364 2129=item % may not be used in pack
6df41af2
GS
2130
2131(F) You can't pack a string by supplying a checksum, because the
be771a83
GS
2132checksumming process loses information, and you can't go the other way.
2133See L<perlfunc/unpack>.
6df41af2 2134
a0d0e21e
LW
2135=item Method for operation %s not found in package %s during blessing
2136
2137(F) An attempt was made to specify an entry in an overloading table that
e7ea3e70 2138doesn't resolve to a valid subroutine. See L<overload>.
a0d0e21e 2139
3cdd684c
TP
2140=item Method %s not permitted
2141
2142See Server error.
2143
a0d0e21e
LW
2144=item Might be a runaway multi-line %s string starting on line %d
2145
2146(S) An advisory indicating that the previous error may have been caused
2147by a missing delimiter on a string or pattern, because it eventually
2148ended earlier on the current line.
2149
2150=item Misplaced _ in number
2151
d4ced10d
JH
2152(W syntax) An underscore (underbar) in a numeric constant did not
2153separate two digits.
a0d0e21e 2154
9e81e6a1
RGS
2155=item Missing argument to -%c
2156
2157(F) The argument to the indicated command line switch must follow
2158immediately after the switch, without intervening spaces.
2159
4a2d328f 2160=item Missing %sbrace%s on \N{}
423cee85 2161
4a2d328f 2162(F) Wrong syntax of character name literal C<\N{charname}> within
423cee85
JH
2163double-quotish context.
2164
a0d0e21e
LW
2165=item Missing comma after first argument to %s function
2166
2167(F) While certain functions allow you to specify a filehandle or an
2168"indirect object" before the argument list, this ain't one of them.
2169
06eaf0bc
GS
2170=item Missing command in piped open
2171
be771a83
GS
2172(W pipe) You used the C<open(FH, "| command")> or
2173C<open(FH, "command |")> construction, but the command was missing or
2174blank.
06eaf0bc 2175
961ce445
RGS
2176=item Missing control char name in \c
2177
2178(F) A double-quoted string ended with "\c", without the required control
2179character name.
2180
6df41af2
GS
2181=item Missing name in "my sub"
2182
be771a83
GS
2183(F) The reserved syntax for lexically scoped subroutines requires that
2184they have a name with which they can be found.
6df41af2
GS
2185
2186=item Missing $ on loop variable
2187
be771a83
GS
2188(F) Apparently you've been programming in B<csh> too much. Variables
2189are always mentioned with the $ in Perl, unlike in the shells, where it
2190can vary from one line to the next.
6df41af2 2191
cc507455 2192=item (Missing operator before %s?)
748a9306 2193
56da5a46
RGS
2194(S syntax) This is an educated guess made in conjunction with the message
2195"%s found where operator expected". Often the missing operator is a comma.
748a9306 2196
ab13f0c7
JH
2197=item Missing right brace on %s
2198
2199(F) Missing right brace in C<\p{...}> or C<\P{...}>.
2200
d98d5fff 2201=item Missing right curly or square bracket
a0d0e21e 2202
be771a83
GS
2203(F) The lexer counted more opening curly or square brackets than closing
2204ones. As a general rule, you'll find it's missing near the place you
2205were last editing.
a0d0e21e 2206
6df41af2
GS
2207=item (Missing semicolon on previous line?)
2208
56da5a46
RGS
2209(S syntax) This is an educated guess made in conjunction with the message
2210"%s found where operator expected". Don't automatically put a semicolon on
6df41af2
GS
2211the previous line just because you saw this message.
2212
a0d0e21e
LW
2213=item Modification of a read-only value attempted
2214
2215(F) You tried, directly or indirectly, to change the value of a
5f05dabc 2216constant. You didn't, of course, try "2 = 1", because the compiler
a0d0e21e
LW
2217catches that. But an easy way to do the same thing is:
2218
2219 sub mod { $_[0] = 1 }
2220 mod(2);
2221
2222Another way is to assign to a substr() that's off the end of the string.
2223
c5674021
PDF
2224Yet another way is to assign to a C<foreach> loop I<VAR> when I<VAR>
2225is aliased to a constant in the look I<LIST>:
2226
2227 $x = 1;
2228 foreach my $n ($x, 2) {
2229 $n *= 2; # modifies the $x, but fails on attempt to modify the 2
64977eb6 2230 }
c5674021 2231
7a4340ed 2232=item Modification of non-creatable array value attempted, %s
a0d0e21e
LW
2233
2234(F) You tried to make an array value spring into existence, and the
2235subscript was probably negative, even counting from end of the array
2236backwards.
2237
7a4340ed 2238=item Modification of non-creatable hash value attempted, %s
a0d0e21e 2239
be771a83
GS
2240(P) You tried to make a hash value spring into existence, and it
2241couldn't be created for some peculiar reason.
a0d0e21e
LW
2242
2243=item Module name must be constant
2244
2245(F) Only a bare module name is allowed as the first argument to a "use".
2246
be98fb35 2247=item Module name required with -%c option
6df41af2 2248
be98fb35
GS
2249(F) The C<-M> or C<-m> options say that Perl should load some module, but
2250you omitted the name of the module. Consult L<perlrun> for full details
2251about C<-M> and C<-m>.
6df41af2 2252
ed9aa3b7
SG
2253=item More than one argument to open
2254
2255(F) The C<open> function has been asked to open multiple files. This
2256can happen if you are trying to open a pipe to a command that takes a
2257list of arguments, but have forgotten to specify a piped open mode.
2258See L<perlfunc/open> for details.
2259
a0d0e21e
LW
2260=item msg%s not implemented
2261
2262(F) You don't have System V message IPC on your system.
2263
2264=item Multidimensional syntax %s not supported
2265
75b44862
GS
2266(W syntax) Multidimensional arrays aren't written like C<$foo[1,2,3]>.
2267They're written like C<$foo[1][2][3]>, as in C.
8b1a09fc 2268
49704364 2269=item '/' must be followed by 'a*', 'A*' or 'Z*'
09bef843 2270
6df41af2 2271(F) You had a pack template indicating a counted-length string,
be771a83
GS
2272Currently the only things that can have their length counted are a*, A*
2273or Z*. See L<perlfunc/pack>.
6df41af2 2274
49704364 2275=item '/' must follow a numeric type in unpack
6df41af2 2276
49704364
LW
2277(F) You had an unpack template that contained a '/', but this did not
2278follow some unpack specification producing a numeric value.
2279See L<perlfunc/pack>.
6df41af2
GS
2280
2281=item "my sub" not yet implemented
2282
be771a83
GS
2283(F) Lexically scoped subroutines are not yet implemented. Don't try
2284that yet.
6df41af2
GS
2285
2286=item "my" variable %s can't be in a package
2287
be771a83
GS
2288(F) Lexically scoped variables aren't in a package, so it doesn't make
2289sense to try to declare one with a package qualifier on the front. Use
2290local() if you want to localize a package variable.
09bef843 2291
8b1a09fc
PP
2292=item Name "%s::%s" used only once: possible typo
2293
e476b1b5 2294(W once) Typographical errors often show up as unique variable names.
be771a83
GS
2295If you had a good reason for having a unique name, then just mention it
2296again somehow to suppress the message. The C<our> declaration is
77ca0c92 2297provided for this purpose.
a0d0e21e 2298
64b374f4
FD
2299NOTE: This warning detects symbols that have been used only once so $c, @c,
2300%c, *c, &c, sub c{}, c(), and c (the filehandle or format) are considered
2301the same; if a program uses $c only once but also uses any of the others it
2302will not trigger this warning.
2303
49704364
LW
2304=item Negative '/' count in unpack
2305
2306(F) The length count obtained from a length/code unpack operation was
2307negative. See L<perlfunc/pack>.
2308
a0d0e21e
LW
2309=item Negative length
2310
be771a83
GS
2311(F) You tried to do a read/write/send/recv operation with a buffer
2312length that is less than 0. This is difficult to imagine.
a0d0e21e 2313
ed9aa3b7
SG
2314=item Negative offset to vec in lvalue context
2315
2316(F) When C<vec> is called in an lvalue context, the second argument must be
2317greater than or equal to zero.
2318
7253e4e3 2319=item Nested quantifiers in regex; marked by <-- HERE in m/%s/
a0d0e21e 2320
b45f050a 2321(F) You can't quantify a quantifier without intervening parentheses. So
7253e4e3 2322things like ** or +* or ?* are illegal. The <-- HERE shows in the regular
b45f050a 2323expression about where the problem was discovered.
a0d0e21e 2324
7253e4e3 2325Note that the minimal matching quantifiers, C<*?>, C<+?>, and
be771a83 2326C<??> appear to be nested quantifiers, but aren't. See L<perlre>.
a0d0e21e 2327
6df41af2 2328=item %s never introduced
a0d0e21e 2329
be771a83
GS
2330(S internal) The symbol in question was declared but somehow went out of
2331scope before it could possibly have been used.
a0d0e21e
LW
2332
2333=item No %s allowed while running setuid
2334
be771a83
GS
2335(F) Certain operations are deemed to be too insecure for a setuid or
2336setgid script to even be allowed to attempt. Generally speaking there
2337will be another way to do what you want that is, if not secure, at least
2338securable. See L<perlsec>.
a0d0e21e 2339
a0d0e21e
LW
2340=item No comma allowed after %s
2341
2342(F) A list operator that has a filehandle or "indirect object" is not
2343allowed to have a comma between that and the following arguments.
2344Otherwise it'd be just another one of the arguments.
2345
0a753a76
PP
2346One possible cause for this is that you expected to have imported a
2347constant to your name space with B<use> or B<import> while no such
2348importing took place, it may for example be that your operating system
2349does not support that particular constant. Hopefully you did use an
2350explicit import list for the constants you expect to see, please see
2351L<perlfunc/use> and L<perlfunc/import>. While an explicit import list
2352would probably have caught this error earlier it naturally does not
2353remedy the fact that your operating system still does not support that
2354constant. Maybe you have a typo in the constants of the symbol import
2355list of B<use> or B<import> or in the constant name at the line where
2356this error was triggered?
2357
748a9306
LW
2358=item No command into which to pipe on command line
2359
be771a83
GS
2360(F) An error peculiar to VMS. Perl handles its own command line
2361redirection, and found a '|' at the end of the command line, so it
2362doesn't know where you want to pipe the output from this command.
748a9306 2363
a0d0e21e
LW
2364=item No DB::DB routine defined
2365
be771a83
GS
2366(F) The currently executing code was compiled with the B<-d> switch, but
2367for some reason the perl5db.pl file (or some facsimile thereof) didn't
2368define a routine to be called at the beginning of each statement. Which
2369is odd, because the file should have been required automatically, and
2370should have blown up the require if it didn't parse right.
a0d0e21e
LW
2371
2372=item No dbm on this machine
2373
2374(P) This is counted as an internal error, because every machine should
5f05dabc 2375supply dbm nowadays, because Perl comes with SDBM. See L<SDBM_File>.
a0d0e21e
LW
2376
2377=item No DBsub routine
2378
2379(F) The currently executing code was compiled with the B<-d> switch,
2380but for some reason the perl5db.pl file (or some facsimile thereof)
2381didn't define a DB::sub routine to be called at the beginning of each
2382ordinary subroutine call.
2383
96ebfdd7
RK
2384=item No B<-e> allowed in setuid scripts
2385
2386(F) A setuid script can't be specified by the user.
2387
c47ff5f1 2388=item No error file after 2> or 2>> on command line
748a9306 2389
be771a83
GS
2390(F) An error peculiar to VMS. Perl handles its own command line
2391redirection, and found a '2>' or a '2>>' on the command line, but can't
2392find the name of the file to which to write data destined for stderr.
748a9306 2393
49704364
LW
2394=item No group ending character '%c' found in template
2395
2396(F) A pack or unpack template has an opening '(' or '[' without its
2397matching counterpart. See L<perlfunc/pack>.
2398
c47ff5f1 2399=item No input file after < on command line
748a9306 2400
be771a83
GS
2401(F) An error peculiar to VMS. Perl handles its own command line
2402redirection, and found a '<' on the command line, but can't find the
2403name of the file from which to read data for stdin.
748a9306 2404
6df41af2
GS
2405=item No #! line
2406
2407(F) The setuid emulator requires that scripts have a well-formed #! line
2408even on machines that don't support the #! construct.
2409
2410=item "no" not allowed in expression
2411
be771a83
GS
2412(F) The "no" keyword is recognized and executed at compile time, and
2413returns no useful value. See L<perlmod>.
6df41af2 2414
c47ff5f1 2415=item No output file after > on command line
748a9306 2416
be771a83
GS
2417(F) An error peculiar to VMS. Perl handles its own command line
2418redirection, and found a lone '>' at the end of the command line, so it
2419doesn't know where you wanted to redirect stdout.
748a9306 2420
c47ff5f1 2421=item No output file after > or >> on command line
748a9306 2422
be771a83
GS
2423(F) An error peculiar to VMS. Perl handles its own command line
2424redirection, and found a '>' or a '>>' on the command line, but can't
2425find the name of the file to which to write data destined for stdout.
748a9306 2426
1ec3e8de
GS
2427=item No package name allowed for variable %s in "our"
2428
be771a83
GS
2429(F) Fully qualified variable names are not allowed in "our"
2430declarations, because that doesn't make much sense under existing
2431semantics. Such syntax is reserved for future extensions.
1ec3e8de 2432
a0d0e21e
LW
2433=item No Perl script found in input
2434
2435(F) You called C<perl -x>, but no line was found in the file beginning
2436with #! and containing the word "perl".
2437
2438=item No setregid available
2439
2440(F) Configure didn't find anything resembling the setregid() call for
2441your system.
2442
2443=item No setreuid available
2444
2445(F) Configure didn't find anything resembling the setreuid() call for
2446your system.
2447
6df41af2
GS
2448=item No %s specified for -%c
2449
2450(F) The indicated command line switch needs a mandatory argument, but
2451you haven't specified one.
2452
e75d1f10
RD
2453=item No such class field "%s" in variable %s of type %s
2454
2455(F) You tried to access a key from a hash through the indicated typed variable
2456but that key is not allowed by the package of the same type. The indicated
2457package has restricted the set of allowed keys using the L<fields> pragma.
2458
2c692339
RGS
2459=item No such class %s
2460
2461(F) You provided a class qualifier in a "my" or "our" declaration, but
2462this class doesn't exist at this point in your program.
2463
6df41af2
GS
2464=item No such pipe open
2465
2466(P) An error peculiar to VMS. The internal routine my_pclose() tried to
be771a83
GS
2467close a pipe which hadn't been opened. This should have been caught
2468earlier as an attempt to close an unopened filehandle.
6df41af2 2469
a0d0e21e
LW
2470=item No such signal: SIG%s
2471
be771a83
GS
2472(W signal) You specified a signal name as a subscript to %SIG that was
2473not recognized. Say C<kill -l> in your shell to see the valid signal
2474names on your system.
a0d0e21e
LW
2475
2476=item Not a CODE reference
2477
2478(F) Perl was trying to evaluate a reference to a code value (that is, a
2479subroutine), but found a reference to something else instead. You can
be771a83
GS
2480use the ref() function to find out what kind of ref it really was. See
2481also L<perlref>.
a0d0e21e
LW
2482
2483=item Not a format reference
2484
2485(F) I'm not sure how you managed to generate a reference to an anonymous
2486format, but this indicates you did, and that it didn't exist.
2487
2488=item Not a GLOB reference
2489
be771a83
GS
2490(F) Perl was trying to evaluate a reference to a "typeglob" (that is, a
2491symbol table entry that looks like C<*foo>), but found a reference to
2492something else instead. You can use the ref() function to find out what
2493kind of ref it really was. See L<perlref>.
a0d0e21e
LW
2494
2495=item Not a HASH reference
2496
be771a83
GS
2497(F) Perl was trying to evaluate a reference to a hash value, but found a
2498reference to something else instead. You can use the ref() function to
2499find out what kind of ref it really was. See L<perlref>.
a0d0e21e 2500
6df41af2
GS
2501=item Not an ARRAY reference
2502
be771a83
GS
2503(F) Perl was trying to evaluate a reference to an array value, but found
2504a reference to something else instead. You can use the ref() function
2505to find out what kind of ref it really was. See L<perlref>.
6df41af2 2506
a0d0e21e
LW
2507=item Not a perl script
2508
2509(F) The setuid emulator requires that scripts have a well-formed #! line
2510even on machines that don't support the #! construct. The line must
2511mention perl.
2512
2513=item Not a SCALAR reference
2514
be771a83
GS
2515(F) Perl was trying to evaluate a reference to a scalar value, but found
2516a reference to something else instead. You can use the ref() function
2517to find out what kind of ref it really was. See L<perlref>.
a0d0e21e
LW
2518
2519=item Not a subroutine reference
2520
2521(F) Perl was trying to evaluate a reference to a code value (that is, a
2522subroutine), but found a reference to something else instead. You can
be771a83
GS
2523use the ref() function to find out what kind of ref it really was. See
2524also L<perlref>.
a0d0e21e 2525
e7ea3e70 2526=item Not a subroutine reference in overload table
a0d0e21e
LW
2527
2528(F) An attempt was made to specify an entry in an overloading table that
8b1a09fc 2529doesn't somehow point to a valid subroutine. See L<overload>.
a0d0e21e 2530
a0d0e21e
LW
2531=item Not enough arguments for %s
2532
2533(F) The function requires more arguments than you specified.
2534
6df41af2
GS
2535=item Not enough format arguments
2536
be771a83
GS
2537(W syntax) A format specified more picture fields than the next line
2538supplied. See L<perlform>.
6df41af2
GS
2539
2540=item %s: not found
2541
be771a83
GS
2542(A) You've accidentally run your script through the Bourne shell instead
2543of Perl. Check the #! line, or manually feed your script into Perl
2544yourself.
6df41af2
GS
2545
2546=item no UTC offset information; assuming local time is UTC
a0d0e21e 2547
6df41af2
GS
2548(S) A warning peculiar to VMS. Perl was unable to find the local
2549timezone offset, so it's assuming that local system time is equivalent
be771a83
GS
2550to UTC. If it's not, define the logical name
2551F<SYS$TIMEZONE_DIFFERENTIAL> to translate to the number of seconds which
2552need to be added to UTC to get local time.
a0d0e21e
LW
2553
2554=item Null filename used
2555
be771a83
GS
2556(F) You can't require the null filename, especially because on many
2557machines that means the current directory! See L<perlfunc/require>.
a0d0e21e 2558
6df41af2
GS
2559=item NULL OP IN RUN
2560
be771a83
GS
2561(P debugging) Some internal routine called run() with a null opcode
2562pointer.
6df41af2 2563
55497cff
PP
2564=item Null picture in formline
2565
2566(F) The first argument to formline must be a valid format picture
2567specification. It was found to be empty, which probably means you
2568supplied it an uninitialized value. See L<perlform>.
2569
a0d0e21e
LW
2570=item Null realloc
2571
2572(P) An attempt was made to realloc NULL.
2573
2574=item NULL regexp argument
2575
5f05dabc 2576(P) The internal pattern matching routines blew it big time.
a0d0e21e
LW
2577
2578=item NULL regexp parameter
2579
2580(P) The internal pattern matching routines are out of their gourd.
2581
fc36a67e
PP
2582=item Number too long
2583
be771a83 2584(F) Perl limits the representation of decimal numbers in programs to
da75cd15 2585about 250 characters. You've exceeded that length. Future
be771a83
GS
2586versions of Perl are likely to eliminate this arbitrary limitation. In
2587the meantime, try using scientific notation (e.g. "1e6" instead of
2588"1_000_000").
fc36a67e 2589
6df41af2
GS
2590=item Octal number in vector unsupported
2591
be771a83
GS
2592(F) Numbers with a leading C<0> are not currently allowed in vectors.
2593The octal number interpretation of such numbers may be supported in a
2594future version.
6df41af2 2595
252aa082
JH
2596=item Octal number > 037777777777 non-portable
2597
75b44862 2598(W portable) The octal number you specified is larger than 2**32-1
be771a83
GS
2599(4294967295) and therefore non-portable between systems. See
2600L<perlport> for more on portability concerns.
252aa082
JH
2601
2602See also L<perlport> for writing portable code.
2603
6ad11d81
JH
2604=item Odd number of arguments for overload::constant
2605
04a80ee0
RGS
2606(W overload) The call to overload::constant contained an odd number of
2607arguments. The arguments should come in pairs.
6ad11d81 2608
b21befc1
MG
2609=item Odd number of elements in anonymous hash
2610
2611(W misc) You specified an odd number of elements to initialize a hash,
2612which is odd, because hashes come in key/value pairs.
2613
1930e939 2614=item Odd number of elements in hash assignment
a0d0e21e 2615
be771a83
GS
2616(W misc) You specified an odd number of elements to initialize a hash,
2617which is odd, because hashes come in key/value pairs.
a0d0e21e 2618
bbce6d69
PP
2619=item Offset outside string
2620
2621(F) You tried to do a read/write/send/recv operation with an offset
be771a83
GS
2622pointing outside the buffer. This is difficult to imagine. The sole
2623exception to this is that C<sysread()>ing past the buffer will extend
2624the buffer and zero pad the new area.
bbce6d69 2625
c289d2f7 2626=item %s() on unopened %s
2dd78f96
JH
2627
2628(W unopened) An I/O operation was attempted on a filehandle that was
2629never initialized. You need to do an open(), a sysopen(), or a socket()
2630call, or call a constructor from the FileHandle package.
2631
96ebfdd7
RK
2632=item -%s on unopened filehandle %s
2633
2634(W unopened) You tried to invoke a file test operator on a filehandle
2635that isn't open. Check your control flow. See also L<perlfunc/-X>.
2636
a0d0e21e
LW
2637=item oops: oopsAV
2638
e476b1b5 2639(S internal) An internal warning that the grammar is screwed up.
a0d0e21e
LW
2640
2641=item oops: oopsHV
2642
e476b1b5 2643(S internal) An internal warning that the grammar is screwed up.
a0d0e21e 2644
56f7f34b 2645=item Operation `%s': no method found, %s
44a8e56a 2646
be771a83
GS
2647(F) An attempt was made to perform an overloaded operation for which no
2648handler was defined. While some handlers can be autogenerated in terms
2649of other handlers, there is no default handler for any operation, unless
2650C<fallback> overloading key is specified to be true. See L<overload>.
44a8e56a 2651
748a9306
LW
2652=item Operator or semicolon missing before %s
2653
be771a83
GS
2654(S ambiguous) You used a variable or subroutine call where the parser
2655was expecting an operator. The parser has assumed you really meant to
2656use an operator, but this is highly likely to be incorrect. For
2657example, if you say "*foo *foo" it will be interpreted as if you said
2658"*foo * 'foo'".
748a9306 2659
6df41af2
GS
2660=item "our" variable %s redeclared
2661
be771a83
GS
2662(W misc) You seem to have already declared the same global once before
2663in the current lexical scope.
6df41af2 2664
a80b8354
GS
2665=item Out of memory!
2666
2667(X) The malloc() function returned 0, indicating there was insufficient
be771a83
GS
2668remaining memory (or virtual memory) to satisfy the request. Perl has
2669no option but to exit immediately.
a80b8354 2670
19a52907
JH
2671At least in Unix you may be able to get past this by increasing your
2672process datasize limits: in csh/tcsh use C<limit> and
2673C<limit datasize n> (where C<n> is the number of kilobytes) to check
2674the current limits and change them, and in ksh/bash/zsh use C<ulimit -a>
2675and C<ulimit -d n>, respectively.
2676
6d3b25aa
RGS
2677=item Out of memory during %s extend
2678
2679(X) An attempt was made to extend an array, a list, or a string beyond
2680the largest possible memory allocation.
2681
6df41af2 2682=item Out of memory during "large" request for %s
a0d0e21e 2683
6df41af2
GS
2684(F) The malloc() function returned 0, indicating there was insufficient
2685remaining memory (or virtual memory) to satisfy the request. However,
be771a83
GS
2686the request was judged large enough (compile-time default is 64K), so a
2687possibility to shut down by trapping this error is granted.
a0d0e21e 2688
1b979e0a 2689=item Out of memory during request for %s
a0d0e21e 2690
be771a83
GS
2691(X|F) The malloc() function returned 0, indicating there was
2692insufficient remaining memory (or virtual memory) to satisfy the
2693request.
eff9c6e2
CS
2694
2695The request was judged to be small, so the possibility to trap it
2696depends on the way perl was compiled. By default it is not trappable.
be771a83
GS
2697However, if compiled for this, Perl may use the contents of C<$^M> as an
2698emergency pool after die()ing with this message. In this case the error
b022d2d2
IZ
2699is trappable I<once>, and the error message will include the line and file
2700where the failed request happened.
55497cff 2701
1b979e0a
IZ
2702=item Out of memory during ridiculously large request
2703
2704(F) You can't allocate more than 2^31+"small amount" bytes. This error
be771a83
GS
2705is most likely to be caused by a typo in the Perl program. e.g.,
2706C<$arr[time]> instead of C<$arr[$time]>.
1b979e0a 2707
6df41af2
GS
2708=item Out of memory for yacc stack
2709
be771a83
GS
2710(F) The yacc parser wanted to grow its stack so it could continue
2711parsing, but realloc() wouldn't give it more memory, virtual or
2712otherwise.
6df41af2 2713
49704364 2714=item '@' outside of string in unpack
6df41af2 2715
49704364 2716(F) You had a template that specified an absolute position outside
6df41af2
GS
2717the string being unpacked. See L<perlfunc/pack>.
2718
2719=item %s package attribute may clash with future reserved word: %s
2720
be771a83
GS
2721(W reserved) A lowercase attribute name was used that had a
2722package-specific handler. That name might have a meaning to Perl itself
2723some day, even though it doesn't yet. Perhaps you should use a
2724mixed-case attribute name, instead. See L<attributes>.
6df41af2 2725
96ebfdd7
RK
2726=item pack/unpack repeat count overflow
2727
2728(F) You can't specify a repeat count so large that it overflows your
2729signed integers. See L<perlfunc/pack>.
2730
a0d0e21e
LW
2731=item page overflow
2732
be771a83
GS
2733(W io) A single call to write() produced more lines than can fit on a
2734page. See L<perlform>.
a0d0e21e 2735
6df41af2
GS
2736=item panic: %s
2737
2738(P) An internal error.
2739
a0d0e21e
LW
2740=item panic: ck_grep
2741
2742(P) Failed an internal consistency check trying to compile a grep.
2743
2744=item panic: ck_split
2745
2746(P) Failed an internal consistency check trying to compile a split.
2747
2748=item panic: corrupt saved stack index
2749
be771a83
GS
2750(P) The savestack was requested to restore more localized values than
2751there are in the savestack.
a0d0e21e 2752
810b8aa5
GS
2753=item panic: del_backref
2754
2755(P) Failed an internal consistency check while trying to reset a weak
2756reference.
2757
7619c85e
RG
2758=item panic: Devel::DProf inconsistent subroutine return
2759
2760(P) Devel::DProf called a subroutine that exited using goto(LABEL),
2761last(LABEL) or next(LABEL). Leaving that way a subroutine called from
2762an XSUB will lead very probably to a crash of the interpreter. This is
2763a bug that will hopefully one day get fixed.
2764
a0d0e21e
LW
2765=item panic: die %s
2766
2767(P) We popped the context stack to an eval context, and then discovered
2768it wasn't an eval context.
2769
a0d0e21e
LW
2770=item panic: do_subst
2771
be771a83
GS
2772(P) The internal pp_subst() routine was called with invalid operational
2773data.
a0d0e21e 2774
2269b42e 2775=item panic: do_trans_%s
a0d0e21e 2776
2269b42e 2777(P) The internal do_trans routines were called with invalid operational
be771a83 2778data.
a0d0e21e 2779
c635e13b
PP
2780=item panic: frexp
2781
2782(P) The library function frexp() failed, making printf("%f") impossible.
2783
a0d0e21e
LW
2784=item panic: goto
2785
2786(P) We popped the context stack to a context with the specified label,
2787and then discovered it wasn't a context we know how to do a goto in.
2788
2789=item panic: INTERPCASEMOD
2790
2791(P) The lexer got into a bad state at a case modifier.
2792
2793=item panic: INTERPCONCAT
2794
2795(P) The lexer got into a bad state parsing a string with brackets.
2796
e446cec8
IZ
2797=item panic: kid popen errno read
2798
2799(F) forked child returned an incomprehensible message about its errno.
2800
a0d0e21e
LW
2801=item panic: last
2802
2803(P) We popped the context stack to a block context, and then discovered
2804it wasn't a block context.
2805
2806=item panic: leave_scope clearsv
2807
be771a83
GS
2808(P) A writable lexical variable became read-only somehow within the
2809scope.
a0d0e21e
LW
2810
2811=item panic: leave_scope inconsistency
2812
2813(P) The savestack probably got out of sync. At least, there was an
2814invalid enum on the top of it.
2815
810b8aa5
GS
2816=item panic: magic_killbackrefs
2817
2818(P) Failed an internal consistency check while trying to reset all weak
2819references to an object.
2820
6df41af2
GS
2821=item panic: malloc
2822
2823(P) Something requested a negative number of bytes of malloc.
2824
a0d0e21e
LW
2825=item panic: mapstart
2826
2827(P) The compiler is screwed up with respect to the map() function.
2828
27d5b266
JH
2829=item panic: memory wrap
2830
2831(P) Something tried to allocate more memory than possible.
2832
a0d0e21e
LW
2833=item panic: null array
2834
2835(P) One of the internal array routines was passed a null AV pointer.
2836
2837=item panic: pad_alloc
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_free curpad
2843
2844(P) The compiler got confused about which scratch pad it was allocating
2845and freeing temporaries and lexicals from.
2846
2847=item panic: pad_free po
2848
2849(P) An invalid scratch pad offset was detected internally.
2850
2851=item panic: pad_reset curpad
2852
2853(P) The compiler got confused about which scratch pad it was allocating
2854and freeing temporaries and lexicals from.
2855
2856=item panic: pad_sv po
2857
2858(P) An invalid scratch pad offset was detected internally.
2859
2860=item panic: pad_swipe curpad
2861
2862(P) The compiler got confused about which scratch pad it was allocating
2863and freeing temporaries and lexicals from.
2864
2865=item panic: pad_swipe po
2866
2867(P) An invalid scratch pad offset was detected internally.
2868
2869=item panic: pp_iter
2870
2871(P) The foreach iterator got called in a non-loop context frame.
2872
96ebfdd7
RK
2873=item panic: pp_match%s
2874
2875(P) The internal pp_match() routine was called with invalid operational
2876data.
2877
2269b42e
JH
2878=item panic: pp_split
2879
2880(P) Something terrible went wrong in setting up for the split.
2881
a0d0e21e
LW
2882=item panic: realloc
2883
2884(P) Something requested a negative number of bytes of realloc.
2885
2886=item panic: restartop
2887
2888(P) Some internal routine requested a goto (or something like it), and
2889didn't supply the destination.
2890
2891=item panic: return
2892
2893(P) We popped the context stack to a subroutine or eval context, and
2894then discovered it wasn't a subroutine or eval context.
2895
2896=item panic: scan_num
2897
2898(P) scan_num() got called on something that wasn't a number.
2899
2900=item panic: sv_insert
2901
2902(P) The sv_insert() routine was told to remove more string than there
2903was string.
2904
2905=item panic: top_env
2906
6224f72b 2907(P) The compiler attempted to do a goto, or something weird like that.
a0d0e21e 2908
dea0fc0b
JH
2909=item panic: utf16_to_utf8: odd bytelen
2910
2911(P) Something tried to call utf16_to_utf8 with an odd (as opposed
64977eb6 2912to even) byte length.
dea0fc0b 2913
2f7da168
RK
2914=item panic: yylex
2915
2916(P) The lexer got into a bad state while processing a case modifier.
2917
7b8d334a 2918=item Parentheses missing around "%s" list
a0d0e21e 2919
e476b1b5 2920(W parenthesis) You said something like
a0d0e21e
LW
2921
2922 my $foo, $bar = @_;
2923
2924when you meant
2925
2926 my ($foo, $bar) = @_;
2927
54884818 2928Remember that "my", "our", and "local" bind tighter than comma.
a0d0e21e 2929
96ebfdd7
RK
2930=item C<-p> destination: %s
2931
2932(F) An error occurred during the implicit output invoked by the C<-p>
2933command-line switch. (This output goes to STDOUT unless you've
2934redirected it with select().)
2935
2936=item (perhaps you forgot to load "%s"?)
2937
2938(F) This is an educated guess made in conjunction with the message
2939"Can't locate object method \"%s\" via package \"%s\"". It often means
2940that a method requires a package that has not been loaded.
2941
1109a392
MHM
2942=item Perl_my_%s() not available
2943
2944(F) Your platform has very uncommon byte-order and integer size,
2945so it was not possible to set up some or all fixed-width byte-order
2946conversion functions. This is only a problem when you're using the
2947'<' or '>' modifiers in (un)pack templates. See L<perlfunc/pack>.
2948
6d3b25aa
RGS
2949=item Perl %s required--this is only version %s, stopped
2950
2951(F) The module in question uses features of a version of Perl more
2952recent than the currently running version. How long has it been since
2953you upgraded, anyway? See L<perlfunc/require>.
2954
6df41af2
GS
2955=item PERL_SH_DIR too long
2956
2957(F) An error peculiar to OS/2. PERL_SH_DIR is the directory to find the
fecfaeb8 2958C<sh>-shell in. See "PERL_SH_DIR" in L<perlos2>.
6df41af2 2959
96ebfdd7
RK
2960=item PERL_SIGNALS illegal: "%s"
2961
2962See L<perlrun/PERL_SIGNALS> for legal values.
2963
6df41af2
GS
2964=item perl: warning: Setting locale failed.
2965
2966(S) The whole warning message will look something like:
2967
2968 perl: warning: Setting locale failed.
2969 perl: warning: Please check that your locale settings:
2970 LC_ALL = "En_US",
2971 LANG = (unset)
2972 are supported and installed on your system.
2973 perl: warning: Falling back to the standard locale ("C").
2974
2975Exactly what were the failed locale settings varies. In the above the
2976settings were that the LC_ALL was "En_US" and the LANG had no value.
0ea6b70f
JH
2977This error means that Perl detected that you and/or your operating
2978system supplier and/or system administrator have set up the so-called
2979locale system but Perl could not use those settings. This was not
2980dead serious, fortunately: there is a "default locale" called "C" that
2981Perl can and will use, the script will be run. Before you really fix
2982the problem, however, you will get the same error message each time
2983you run Perl. How to really fix the problem can be found in
2984L<perllocale> section B<LOCALE PROBLEMS>.
6df41af2 2985
a0d0e21e
LW
2986=item Permission denied
2987
2988(F) The setuid emulator in suidperl decided you were up to no good.
2989
bd3fa61c 2990=item pid %x not a child
748a9306 2991
be771a83
GS
2992(W exec) A warning peculiar to VMS. Waitpid() was asked to wait for a
2993process which isn't a subprocess of the current process. While this is
2994fine from VMS' perspective, it's probably not what you intended.
748a9306 2995
49704364 2996=item 'P' must have an explicit size in unpack
3bf38418
WL
2997
2998(F) The unpack format P must have an explicit size, not "*".
2999
96ebfdd7
RK
3000=item B<-P> not allowed for setuid/setgid script
3001
3002(F) The script would have to be opened by the C preprocessor by name,
3003which provides a race condition that breaks security.
3004
3005=item POSIX class [:%s:] unknown in regex; marked by <-- HERE in m/%s/
3006
3007(F) The class in the character class [: :] syntax is unknown. The <-- HERE
3008shows in the regular expression about where the problem was discovered.
3009Note that the POSIX character classes do B<not> have the C<is> prefix
3010the corresponding C interfaces have: in other words, it's C<[[:print:]]>,
3011not C<isprint>. See L<perlre>.
3012
3013=item POSIX getpgrp can't take an argument
3014
3015(F) Your system has POSIX getpgrp(), which takes no argument, unlike
3016the BSD version, which takes a pid.
3017
49704364 3018=item POSIX syntax [%s] belongs inside character classes in regex; marked by <-- HERE in m/%s/
b45f050a 3019
9a0b3859 3020(W regexp) The character class constructs [: :], [= =], and [. .] go
7253e4e3
RK
3021I<inside> character classes, the [] are part of the construct, for example:
3022/[012[:alpha:]345]/. Note that [= =] and [. .] are not currently
3023implemented; they are simply placeholders for future extensions and will
3024cause fatal errors. The <-- HERE shows in the regular expression about
3025where the problem was discovered. See L<perlre>.
b45f050a 3026
49704364 3027=item POSIX syntax [. .] is reserved for future extensions in regex; marked by <-- HERE in m/%s/
b45f050a
JF
3028
3029(F regexp) Within regular expression character classes ([]) the syntax
7253e4e3
RK
3030beginning with "[." and ending with ".]" is reserved for future extensions.
3031If you need to represent those character sequences inside a regular
3032expression character class, just quote the square brackets with the
3033backslash: "\[." and ".\]". The <-- HERE shows in the regular expression
3034about where the problem was discovered. See L<perlre>.
b45f050a 3035
49704364 3036=item POSIX syntax [= =] is reserved for future extensions in regex; marked by <-- HERE in m/%s/
b45f050a 3037
7253e4e3
RK
3038(F) Within regular expression character classes ([]) the syntax beginning
3039with "[=" and ending with "=]" is reserved for future extensions. If you
3040need to represent those character sequences inside a regular expression
3041character class, just quote the square brackets with the backslash: "\[="
3042and "=\]". The <-- HERE shows in the regular expression about where the
3043problem was discovered. See L<perlre>.
b45f050a 3044
bbce6d69
PP
3045=item Possible attempt to put comments in qw() list
3046
e476b1b5 3047(W qw) qw() lists contain items separated by whitespace; as with literal
75b44862 3048strings, comment characters are not ignored, but are instead treated as
be771a83
GS
3049literal data. (You may have used different delimiters than the
3050parentheses shown here; braces are also frequently used.)
bbce6d69 3051
774d564b
PP
3052You probably wrote something like this:
3053
54310121 3054 @list = qw(
774d564b 3055 a # a comment
bbce6d69 3056 b # another comment
774d564b 3057 );
bbce6d69
PP
3058
3059when you should have written this:
3060
774d564b 3061 @list = qw(
54310121
PP
3062 a
3063 b
774d564b
PP
3064 );
3065
3066If you really want comments, build your list the
3067old-fashioned way, with quotes and commas:
3068
3069 @list = (
3070 'a', # a comment
3071 'b', # another comment
3072 );
bbce6d69
PP
3073
3074=item Possible attempt to separate words with commas
3075
be771a83
GS
3076(W qw) qw() lists contain items separated by whitespace; therefore
3077commas aren't needed to separate the items. (You may have used
3078different delimiters than the parentheses shown here; braces are also
3079frequently used.)
bbce6d69 3080
54310121 3081You probably wrote something like this:
bbce6d69 3082
774d564b
PP
3083 qw! a, b, c !;
3084
3085which puts literal commas into some of the list items. Write it without
3086commas if you don't want them to appear in your data:
bbce6d69 3087
774d564b 3088 qw! a b c !;
bbce6d69 3089
a0d0e21e
LW
3090=item Possible memory corruption: %s overflowed 3rd argument
3091
3092(F) An ioctl() or fcntl() returned more than Perl was bargaining for.
3093Perl guesses a reasonable buffer size, but puts a sentinel byte at the
3094end of the buffer just in case. This sentinel byte got clobbered, and
3095Perl assumes that memory is now corrupted. See L<perlfunc/ioctl>.
3096
276b2a0c
RGS
3097=item Possible precedence problem on bitwise %c operator
3098
3099(W precedence) Your program uses a bitwise logical operator in conjunction
3100with a numeric comparison operator, like this :
3101
3102 if ($x & $y == 0) { ... }
3103
3104This expression is actually equivalent to C<$x & ($y == 0)>, due to the
3105higher precedence of C<==>. This is probably not what you want. (If you
96a925ab
YST
3106really meant to write this, disable the warning, or, better, put the
3107parentheses explicitly and write C<$x & ($y == 0)>).
276b2a0c 3108
18623440
PS
3109=item Possible unintended interpolation of %s in string
3110
3111(W ambiguous) You said something like `@foo' in a double-quoted string
32b0a12e
AMS
3112but there was no array C<@foo> in scope at the time. If you wanted a
3113literal @foo, then write it as \@foo; otherwise find out what happened
3114to the array you apparently lost track of.
18623440 3115
6df41af2
GS
3116=item Possible Y2K bug: %s
3117
3118(W y2k) You are concatenating the number 19 with another number, which
3119could be a potential Year 2000 problem.
3120
8cd79558
GS
3121=item pragma "attrs" is deprecated, use "sub NAME : ATTRS" instead
3122
a1063b2d 3123(D deprecated) You have written something like this:
8cd79558
GS
3124
3125 sub doit
3126 {
3127 use attrs qw(locked);
3128 }
3129
3130You should use the new declaration syntax instead.
3131
3132 sub doit : locked
3133 {
3134 ...
3135
3136The C<use attrs> pragma is now obsolete, and is only provided for
3137backward-compatibility. See L<perlsub/"Subroutine Attributes">.
3138
a0d0e21e
LW
3139=item Precedence problem: open %s should be open(%s)
3140
e476b1b5 3141(S precedence) The old irregular construct
cb1a09d0 3142
a0d0e21e
LW
3143 open FOO || die;
3144
3145is now misinterpreted as
3146
3147 open(FOO || die);
3148
be771a83
GS
3149because of the strict regularization of Perl 5's grammar into unary and
3150list operators. (The old open was a little of both.) You must put
3151parentheses around the filehandle, or use the new "or" operator instead
3152of "||".
a0d0e21e 3153
3cdd684c
TP
3154=item Premature end of script headers
3155
3156See Server error.
3157
6df41af2
GS
3158=item printf() on closed filehandle %s
3159
be771a83 3160(W closed) The filehandle you're writing to got itself closed sometime
c289d2f7 3161before now. Check your control flow.
6df41af2 3162
9a7dcd9c 3163=item print() on closed filehandle %s
a0d0e21e 3164
be771a83 3165(W closed) The filehandle you're printing on got itself closed sometime
c289d2f7 3166before now. Check your control flow.
a0d0e21e 3167
6df41af2 3168=item Process terminated by SIG%s
a0d0e21e 3169
6df41af2
GS
3170(W) This is a standard message issued by OS/2 applications, while *nix
3171applications die in silence. It is considered a feature of the OS/2
3172port. One can easily disable this by appropriate sighandlers, see
3173L<perlipc/"Signals">. See also "Process terminated by SIGTERM/SIGINT"
fecfaeb8 3174in L<perlos2>.
a0d0e21e 3175
3fe9a6f1 3176=item Prototype mismatch: %s vs %s
4633a7c4 3177
9a0b3859 3178(S prototype) The subroutine being declared or defined had previously been
be771a83 3179declared or defined with a different function prototype.
4633a7c4 3180
ed9aa3b7
SG
3181=item Prototype not terminated
3182
2a6fd447 3183(F) You've omitted the closing parenthesis in a function prototype
ed9aa3b7
SG
3184definition.
3185
96ebfdd7
RK
3186=item Quantifier follows nothing in regex; marked by <-- HERE in m/%s/
3187
3188(F) You started a regular expression with a quantifier. Backslash it if you
3189meant it literally. The <-- HERE shows in the regular expression about
3190where the problem was discovered. See L<perlre>.
3191
49704364 3192=item Quantifier in {,} bigger than %d in regex; marked by <-- HERE in m/%s/
9baa0206 3193
b45f050a 3194(F) There is currently a limit to the size of the min and max values of the
7253e4e3 3195{min,max} construct. The <-- HERE shows in the regular expression about where
b45f050a 3196the problem was discovered. See L<perlre>.
9baa0206 3197
49704364 3198=item Quantifier unexpected on zero-length expression; marked by <-- HERE in m/%s/
9baa0206 3199
b45f050a
JF
3200(W regexp) You applied a regular expression quantifier in a place where
3201it makes no sense, such as on a zero-width assertion. Try putting the
3202quantifier inside the assertion instead. For example, the way to match
3203"abc" provided that it is followed by three repetitions of "xyz" is
3204C</abc(?=(?:xyz){3})/>, not C</abc(?=xyz){3}/>.
9baa0206 3205
7253e4e3
RK
3206The <-- HERE shows in the regular expression about where the problem was
3207discovered.
3208
89ea2908
GA
3209=item Range iterator outside integer range
3210
3211(F) One (or both) of the numeric arguments to the range operator ".."
3212are outside the range which can be represented by integers internally.
be771a83
GS
3213One possible workaround is to force Perl to use magical string increment
3214by prepending "0" to your numbers.
89ea2908 3215
96ebfdd7
RK
3216=item readline() on closed filehandle %s
3217
3218(W closed) The filehandle you're reading from got itself closed sometime
3219before now. Check your control flow.
3220
b5fe5ca2
SR
3221=item read() on closed filehandle %s
3222
3223(W closed) You tried to read from a closed filehandle.
3224
3225=item read() on unopened filehandle %s
3226
3227(W unopened) You tried to read from a filehandle that was never opened.
3228
6df41af2
GS
3229=item Reallocation too large: %lx
3230
3231(F) You can't allocate more than 64K on an MS-DOS machine.
3232
4ad56ec9
IZ
3233=item realloc() of freed memory ignored
3234
be771a83
GS
3235(S malloc) An internal routine called realloc() on something that had
3236already been freed.
4ad56ec9 3237
a0d0e21e
LW
3238=item Recompile perl with B<-D>DEBUGGING to use B<-D> switch
3239
be771a83
GS
3240(F debugging) You can't use the B<-D> option unless the code to produce
3241the desired output is compiled into Perl, which entails some overhead,
a0d0e21e
LW
3242which is why it's currently left out of your copy.
3243
3e0ccd42 3244=item Recursive inheritance detected in package '%s'
a0d0e21e
LW
3245
3246(F) More than 100 levels of inheritance were used. Probably indicates
3247an unintended loop in your inheritance hierarchy.
3248
7a4340ed 3249=item Recursive inheritance detected while looking for method %s
3e0ccd42 3250
be771a83
GS
3251(F) More than 100 levels of inheritance were encountered while invoking
3252a method. Probably indicates an unintended loop in your inheritance
3253hierarchy.
3e0ccd42 3254
1930e939
TP
3255=item Reference found where even-sized list expected
3256
be771a83
GS
3257(W misc) You gave a single reference where Perl was expecting a list
3258with an even number of elements (for assignment to a hash). This usually
3259means that you used the anon hash constructor when you meant to use
3260parens. In any case, a hash requires key/value B<pairs>.
7b8d334a
GS
3261
3262 %hash = { one => 1, two => 2, }; # WRONG
3263 %hash = [ qw/ an anon array / ]; # WRONG
3264 %hash = ( one => 1, two => 2, ); # right
3265 %hash = qw( one 1 two 2 ); # also fine
3266
810b8aa5
GS
3267=item Reference is already weak
3268
e476b1b5 3269(W misc) You have attempted to weaken a reference that is already weak.
810b8aa5
GS
3270Doing so has no effect.
3271
a0d0e21e
LW
3272=item Reference miscount in sv_replace()
3273
be771a83
GS
3274(W internal) The internal sv_replace() function was handed a new SV with
3275a reference count of other than 1.
a0d0e21e 3276
49704364 3277=item Reference to nonexistent group in regex; marked by <-- HERE in m/%s/
b45f050a
JF
3278
3279(F) You used something like C<\7> in your regular expression, but there are
3280not at least seven sets of capturing parentheses in the expression. If you
3281wanted to have the character with value 7 inserted into the regular expression,
3282prepend a zero to make the number at least two digits: C<\07>
9baa0206 3283
7253e4e3 3284The <-- HERE shows in the regular expression about where the problem was
b45f050a 3285discovered.
9baa0206 3286
a0d0e21e
LW
3287=item regexp memory corruption
3288
3289(P) The regular expression engine got confused by what the regular
3290expression compiler gave it.
3291
b45f050a 3292=item Regexp out of space
a0d0e21e 3293
be771a83
GS
3294(P) A "can't happen" error, because safemalloc() should have caught it
3295earlier.
a0d0e21e 3296
a1b95068
LW
3297=item Repeated format line will never terminate (~~ and @# incompatible)
3298
3299(F) Your format containes the ~~ repeat-until-blank sequence and a
3300numeric field that will never go blank so that the repetition never
3301terminates. You might use ^# instead. See L<perlform>.
3302
a0d0e21e
LW
3303=item Reversed %s= operator
3304
be771a83
GS
3305(W syntax) You wrote your assignment operator backwards. The = must
3306always comes last, to avoid ambiguity with subsequent unary operators.
a0d0e21e
LW
3307
3308=item Runaway format
3309
3310(F) Your format contained the ~~ repeat-until-blank sequence, but it
3311produced 200 lines at once, and the 200th line looked exactly like the
3312199th line. Apparently you didn't arrange for the arguments to exhaust
3313themselves, either by using ^ instead of @ (for scalar variables), or by
3314shifting or popping (for array variables). See L<perlform>.
3315
96ebfdd7
RK
3316=item Scalars leaked: %d
3317
3318(P) Something went wrong in Perl's internal bookkeeping of scalars:
3319not all scalar variables were deallocated by the time Perl exited.
3320What this usually indicates is a memory leak, which is of course bad,
3321especially if the Perl program is intended to be long-running.
3322
a0d0e21e
LW
3323=item Scalar value @%s[%s] better written as $%s[%s]
3324
be771a83
GS
3325(W syntax) You've used an array slice (indicated by @) to select a
3326single element of an array. Generally it's better to ask for a scalar
3327value (indicated by $). The difference is that C<$foo[&bar]> always
3328behaves like a scalar, both when assigning to it and when evaluating its
3329argument, while C<@foo[&bar]> behaves like a list when you assign to it,
3330and provides a list context to its subscript, which can do weird things
3331if you're expecting only one subscript.
a0d0e21e 3332
748a9306 3333On the other hand, if you were actually hoping to treat the array
5f05dabc 3334element as a list, you need to look into how references work, because
748a9306
LW
3335Perl will not magically convert between scalars and lists for you. See
3336L<perlref>.
3337
a6006777
PP
3338=item Scalar value @%s{%s} better written as $%s{%s}
3339
75b44862 3340(W syntax) You've used a hash slice (indicated by @) to select a single
be771a83
GS
3341element of a hash. Generally it's better to ask for a scalar value
3342(indicated by $). The difference is that C<$foo{&bar}> always behaves
3343like a scalar, both when assigning to it and when evaluating its
3344argument, while C<@foo{&bar}> behaves like a list when you assign to it,
3345and provides a list context to its subscript, which can do weird things
3346if you're expecting only one subscript.
3347
3348On the other hand, if you were actually hoping to treat the hash element
3349as a list, you need to look into how references work, because Perl will
3350not magically convert between scalars and lists for you. See
a6006777
PP
3351L<perlref>.
3352
a0d0e21e
LW
3353=item Script is not setuid/setgid in suidperl
3354
54310121
PP
3355(F) Oddly, the suidperl program was invoked on a script without a setuid
3356or setgid bit set. This doesn't make much sense.
a0d0e21e
LW
3357
3358=item Search pattern not terminated
3359
3360(F) The lexer couldn't find the final delimiter of a // or m{}
3361construct. Remember that bracketing delimiters count nesting level.
fb73857a 3362Missing the leading C<$> from a variable C<$m> may cause this error.
a0d0e21e 3363
0cb1bcd7 3364Note that since Perl 5.9.0 a // can also be the I<defined-or>
5d9c98cd
JH
3365construct, not just the empty search pattern. Therefore code written
3366in Perl 5.9.0 or later that uses the // as the I<defined-or> can be
3367misparsed by pre-5.9.0 Perls as a non-terminated search pattern.
3368
9ddeeac9 3369=item %sseek() on unopened filehandle
a0d0e21e 3370
be771a83
GS
3371(W unopened) You tried to use the seek() or sysseek() function on a
3372filehandle that was either never opened or has since been closed.
a0d0e21e
LW
3373
3374=item select not implemented
3375
3376(F) This machine doesn't implement the select() system call.
3377
ae21d580 3378=item Self-ties of arrays and hashes are not supported
68a4a7e4 3379
ae21d580
JH
3380(F) Self-ties are of arrays and hashes are not supported in
3381the current implementation.
68a4a7e4 3382
6df41af2 3383=item Semicolon seems to be missing
a0d0e21e 3384
75b44862
GS
3385(W semicolon) A nearby syntax error was probably caused by a missing
3386semicolon, or possibly some other missing operator, such as a comma.
a0d0e21e
LW
3387
3388=item semi-panic: attempt to dup freed string
3389
be771a83
GS
3390(S internal) The internal newSVsv() routine was called to duplicate a
3391scalar that had previously been marked as free.
a0d0e21e 3392
6df41af2 3393=item sem%s not implemented
a0d0e21e 3394
6df41af2 3395(F) You don't have System V semaphore IPC on your system.
a0d0e21e 3396
69282e91 3397=item send() on closed socket %s
a0d0e21e 3398
be771a83 3399(W closed) The socket you're sending to got itself closed sometime
c289d2f7 3400before now. Check your control flow.
a0d0e21e 3401
7253e4e3 3402=item Sequence (? incomplete in regex; marked by <-- HERE