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