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