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