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