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