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