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