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