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