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