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