source: for-distributions/trunk/bin/windows/perl/lib/Pod/perldiag.pod@ 14489

Last change on this file since 14489 was 14489, checked in by oranfry, 17 years ago

upgrading to perl 5.8

File size: 162.5 KB
Line 
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 (default).
13 (F) A fatal error (trappable).
14 (P) An internal error you should never see (trappable).
15 (X) A very fatal error (nontrappable).
16 (A) An alien error message (not generated by Perl).
17
18The majority of messages from the first three classifications above
19(W, D & S) can be controlled using the C<warnings> pragma.
20
21If a message can be controlled by the C<warnings> pragma, its warning
22category is included with the classification letter in the description
23below.
24
25Optional warnings are enabled by using the C<warnings> pragma or the B<-w>
26and B<-W> switches. Warnings may be captured by setting C<$SIG{__WARN__}>
27to a reference to a routine that will be called on each warning instead
28of printing it. See L<perlvar>.
29
30Default warnings are always enabled unless they are explicitly disabled
31with the C<warnings> pragma or the B<-X> switch.
32
33Trappable errors may be trapped using the eval operator. See
34L<perlfunc/eval>. In almost all cases, warnings may be selectively
35disabled or promoted to fatal errors using the C<warnings> pragma.
36See L<warnings>.
37
38The messages are in alphabetical order, without regard to upper or
39lower-case. Some of these messages are generic. Spots that vary are
40denoted with a %s or other printf-style escape. These escapes are
41ignored by the alphabetical order, as are all characters other than
42letters. To look up your message, just ignore anything that is not a
43letter.
44
45=over 4
46
47=item accept() on closed socket %s
48
49(W closed) You tried to do an accept on a closed socket. Did you forget
50to check the return value of your socket() call? See
51L<perlfunc/accept>.
52
53=item Allocation too large: %lx
54
55(X) You can't allocate more than 64K on an MS-DOS machine.
56
57=item '!' allowed only after types %s
58
59(F) The '!' is allowed in pack() or unpack() only after certain types.
60See L<perlfunc/pack>.
61
62=item Ambiguous call resolved as CORE::%s(), qualify as such or use &
63
64(W ambiguous) A subroutine you have declared has the same name as a Perl
65keyword, and you have used the name without qualification for calling
66one or the other. Perl decided to call the builtin because the
67subroutine is not imported.
68
69To force interpretation as a subroutine call, either put an ampersand
70before the subroutine name, or qualify the name with its package.
71Alternatively, you can import the subroutine (or pretend that it's
72imported with the C<use subs> pragma).
73
74To silently interpret it as the Perl operator, use the C<CORE::> prefix
75on the operator (e.g. C<CORE::log($x)>) or declare the subroutine
76to be an object method (see L<perlsub/"Subroutine Attributes"> or
77L<attributes>).
78
79=item Ambiguous range in transliteration operator
80
81(F) You wrote something like C<tr/a-z-0//> which doesn't mean anything at
82all. To include a C<-> character in a transliteration, put it either
83first or last. (In the past, C<tr/a-z-0//> was synonymous with
84C<tr/a-y//>, which was probably not what you would have expected.)
85
86=item Ambiguous use of %s resolved as %s
87
88(W ambiguous)(S) You said something that may not be interpreted the way
89you thought. Normally it's pretty easy to disambiguate it by supplying
90a missing quote, operator, parenthesis pair or declaration.
91
92=item '|' and '<' may not both be specified on command line
93
94(F) An error peculiar to VMS. Perl does its own command line
95redirection, and found that STDIN was a pipe, and that you also tried to
96redirect STDIN using '<'. Only one STDIN stream to a customer, please.
97
98=item '|' and '>' may not both be specified on command line
99
100(F) An error peculiar to VMS. Perl does its own command line
101redirection, and thinks you tried to redirect stdout both to a file and
102into a pipe to another command. You need to choose one or the other,
103though nothing's stopping you from piping into a program or Perl script
104which 'splits' output into two streams, such as
105
106 open(OUT,">$ARGV[0]") or die "Can't write to $ARGV[0]: $!";
107 while (<STDIN>) {
108 print;
109 print OUT;
110 }
111 close OUT;
112
113=item Applying %s to %s will act on scalar(%s)
114
115(W misc) The pattern match (C<//>), substitution (C<s///>), and
116transliteration (C<tr///>) operators work on scalar values. If you apply
117one of them to an array or a hash, it will convert the array or hash to
118a scalar value -- the length of an array, or the population info of a
119hash -- and then work on that scalar value. This is probably not what
120you meant to do. See L<perlfunc/grep> and L<perlfunc/map> for
121alternatives.
122
123=item Args must match #! line
124
125(F) The setuid emulator requires that the arguments Perl was invoked
126with match the arguments specified on the #! line. Since some systems
127impose a one-argument limit on the #! line, try combining switches;
128for example, turn C<-w -U> into C<-wU>.
129
130=item Arg too short for msgsnd
131
132(F) msgsnd() requires a string at least as long as sizeof(long).
133
134=item %s argument is not a HASH or ARRAY element
135
136(F) The argument to exists() must be a hash or array element, such as:
137
138 $foo{$bar}
139 $ref->{"susie"}[12]
140
141=item %s argument is not a HASH or ARRAY element or slice
142
143(F) The argument to delete() must be either a hash or array element,
144such as:
145
146 $foo{$bar}
147 $ref->{"susie"}[12]
148
149or a hash or array slice, such as:
150
151 @foo[$bar, $baz, $xyzzy]
152 @{$ref->[12]}{"susie", "queue"}
153
154=item %s argument is not a subroutine name
155
156(F) The argument to exists() for C<exists &sub> must be a subroutine
157name, and not a subroutine call. C<exists &sub()> will generate this
158error.
159
160=item Argument "%s" isn't numeric%s
161
162(W numeric) The indicated string was fed as an argument to an operator
163that expected a numeric value instead. If you're fortunate the message
164will identify which operator was so unfortunate.
165
166=item Argument list not closed for PerlIO layer "%s"
167
168(W layer) When pushing a layer with arguments onto the Perl I/O system you
169forgot the ) that closes the argument list. (Layers take care of transforming
170data between external and internal representations.) Perl stopped parsing
171the layer list at this point and did not attempt to push this layer.
172If your program didn't explicitly request the failing operation, it may be
173the result of the value of the environment variable PERLIO.
174
175=item Array @%s missing the @ in argument %d of %s()
176
177(D deprecated) Really old Perl let you omit the @ on array names in some
178spots. This is now heavily deprecated.
179
180=item assertion botched: %s
181
182(P) The malloc package that comes with Perl had an internal failure.
183
184=item Assertion failed: file "%s"
185
186(P) A general assertion failed. The file in question must be examined.
187
188=item Assignment to both a list and a scalar
189
190(F) If you assign to a conditional operator, the 2nd and 3rd arguments
191must either both be scalars or both be lists. Otherwise Perl won't
192know which context to supply to the right side.
193
194=item A thread exited while %d threads were running
195
196(W threads)(S) When using threaded Perl, a thread (not necessarily the main
197thread) exited while there were still other threads running.
198Usually it's a good idea to first collect the return values of the
199created threads by joining them, and only then exit from the main
200thread. See L<threads>.
201
202=item Attempt to access disallowed key '%s' in a restricted hash
203
204(F) The failing code has attempted to get or set a key which is not in
205the current set of allowed keys of a restricted hash.
206
207=item Attempt to bless into a reference
208
209(F) The CLASSNAME argument to the bless() operator is expected to be
210the name of the package to bless the resulting object into. You've
211supplied instead a reference to something: perhaps you wrote
212
213 bless $self, $proto;
214
215when you intended
216
217 bless $self, ref($proto) || $proto;
218
219If you actually want to bless into the stringified version
220of the reference supplied, you need to stringify it yourself, for
221example by:
222
223 bless $self, "$proto";
224
225=item Attempt to delete disallowed key '%s' from a restricted hash
226
227(F) The failing code attempted to delete from a restricted hash a key
228which is not in its key set.
229
230=item Attempt to delete readonly key '%s' from a restricted hash
231
232(F) The failing code attempted to delete a key whose value has been
233declared readonly from a restricted hash.
234
235=item Attempt to free non-arena SV: 0x%lx
236
237(P internal) All SV objects are supposed to be allocated from arenas
238that will be garbage collected on exit. An SV was discovered to be
239outside any of those arenas.
240
241=item Attempt to free nonexistent shared string
242
243(P internal) Perl maintains a reference counted internal table of
244strings to optimize the storage and access of hash keys and other
245strings. This indicates someone tried to decrement the reference count
246of a string that can no longer be found in the table.
247
248=item Attempt to free temp prematurely
249
250(W debugging) Mortalized values are supposed to be freed by the
251free_tmps() routine. This indicates that something else is freeing the
252SV before the free_tmps() routine gets a chance, which means that the
253free_tmps() routine will be freeing an unreferenced scalar when it does
254try to free it.
255
256=item Attempt to free unreferenced glob pointers
257
258(P internal) The reference counts got screwed up on symbol aliases.
259
260=item Attempt to free unreferenced scalar
261
262(W internal) Perl went to decrement the reference count of a scalar to
263see if it would go to 0, and discovered that it had already gone to 0
264earlier, and should have been freed, and in fact, probably was freed.
265This could indicate that SvREFCNT_dec() was called too many times, or
266that SvREFCNT_inc() was called too few times, or that the SV was
267mortalized when it shouldn't have been, or that memory has been
268corrupted.
269
270=item Attempt to join self
271
272(F) You tried to join a thread from within itself, which is an
273impossible task. You may be joining the wrong thread, or you may need
274to move the join() to some other thread.
275
276=item Attempt to pack pointer to temporary value
277
278(W pack) You tried to pass a temporary value (like the result of a
279function, or a computed expression) to the "p" pack() template. This
280means the result contains a pointer to a location that could become
281invalid anytime, even before the end of the current statement. Use
282literals or global values as arguments to the "p" pack() template to
283avoid this warning.
284
285=item Attempt to set length of freed array
286
287(W) You tried to set the length of an array which has been freed. You
288can do this by storing a reference to the scalar representing the last index
289of an array and later assigning through that reference. For example
290
291 $r = do {my @a; \$#a};
292 $$r = 503
293
294=item Attempt to use reference as lvalue in substr
295
296(W substr) You supplied a reference as the first argument to substr()
297used as an lvalue, which is pretty strange. Perhaps you forgot to
298dereference it first. See L<perlfunc/substr>.
299
300=item Bad arg length for %s, is %d, should be %s
301
302(F) You passed a buffer of the wrong size to one of msgctl(), semctl()
303or shmctl(). In C parlance, the correct sizes are, respectively,
304S<sizeof(struct msqid_ds *)>, S<sizeof(struct semid_ds *)>, and
305S<sizeof(struct shmid_ds *)>.
306
307=item Bad evalled substitution pattern
308
309(F) You've used the C</e> switch to evaluate the replacement for a
310substitution, but perl found a syntax error in the code to evaluate,
311most likely an unexpected right brace '}'.
312
313=item Bad filehandle: %s
314
315(F) A symbol was passed to something wanting a filehandle, but the
316symbol has no filehandle associated with it. Perhaps you didn't do an
317open(), or did it in another package.
318
319=item Bad free() ignored
320
321(S malloc) An internal routine called free() on something that had never
322been malloc()ed in the first place. Mandatory, but can be disabled by
323setting environment variable C<PERL_BADFREE> to 0.
324
325This message can be seen quite often with DB_File on systems with "hard"
326dynamic linking, like C<AIX> and C<OS/2>. It is a bug of C<Berkeley DB>
327which is left unnoticed if C<DB> uses I<forgiving> system malloc().
328
329=item Bad hash
330
331(P) One of the internal hash routines was passed a null HV pointer.
332
333=item Bad index while coercing array into hash
334
335(F) The index looked up in the hash found as the 0'th element of a
336pseudo-hash is not legal. Index values must be at 1 or greater.
337See L<perlref>.
338
339=item Badly placed ()'s
340
341(A) You've accidentally run your script through B<csh> instead
342of Perl. Check the #! line, or manually feed your script into
343Perl yourself.
344
345=item Bad name after %s::
346
347(F) You started to name a symbol by using a package prefix, and then
348didn't finish the symbol. In particular, you can't interpolate outside
349of quotes, so
350
351 $var = 'myvar';
352 $sym = mypack::$var;
353
354is not the same as
355
356 $var = 'myvar';
357 $sym = "mypack::$var";
358
359=item Bad realloc() ignored
360
361(S malloc) An internal routine called realloc() on something that had
362never been malloc()ed in the first place. Mandatory, but can be disabled
363by setting environment variable C<PERL_BADFREE> to 1.
364
365=item Bad symbol for array
366
367(P) An internal request asked to add an array entry to something that
368wasn't a symbol table entry.
369
370=item Bad symbol for filehandle
371
372(P) An internal request asked to add a filehandle entry to something
373that wasn't a symbol table entry.
374
375=item Bad symbol for hash
376
377(P) An internal request asked to add a hash entry to something that
378wasn't a symbol table entry.
379
380=item Bareword found in conditional
381
382(W bareword) The compiler found a bareword where it expected a
383conditional, which often indicates that an || or && was parsed as part
384of the last argument of the previous construct, for example:
385
386 open FOO || die;
387
388It may also indicate a misspelled constant that has been interpreted as
389a bareword:
390
391 use constant TYPO => 1;
392 if (TYOP) { print "foo" }
393
394The C<strict> pragma is useful in avoiding such errors.
395
396=item Bareword "%s" not allowed while "strict subs" in use
397
398(F) With "strict subs" in use, a bareword is only allowed as a
399subroutine identifier, in curly brackets or to the left of the "=>"
400symbol. Perhaps you need to predeclare a subroutine?
401
402=item Bareword "%s" refers to nonexistent package
403
404(W bareword) You used a qualified bareword of the form C<Foo::>, but the
405compiler saw no other uses of that namespace before that point. Perhaps
406you need to predeclare a package?
407
408=item BEGIN failed--compilation aborted
409
410(F) An untrapped exception was raised while executing a BEGIN
411subroutine. Compilation stops immediately and the interpreter is
412exited.
413
414=item BEGIN not safe after errors--compilation aborted
415
416(F) Perl found a C<BEGIN {}> subroutine (or a C<use> directive, which
417implies a C<BEGIN {}>) after one or more compilation errors had already
418occurred. Since the intended environment for the C<BEGIN {}> could not
419be guaranteed (due to the errors), and since subsequent code likely
420depends on its correct operation, Perl just gave up.
421
422=item \1 better written as $1
423
424(W syntax) Outside of patterns, backreferences live on as variables.
425The use of backslashes is grandfathered on the right-hand side of a
426substitution, but stylistically it's better to use the variable form
427because other Perl programmers will expect it, and it works better if
428there are more than 9 backreferences.
429
430=item Binary number > 0b11111111111111111111111111111111 non-portable
431
432(W portable) The binary number you specified is larger than 2**32-1
433(4294967295) and therefore non-portable between systems. See
434L<perlport> for more on portability concerns.
435
436=item bind() on closed socket %s
437
438(W closed) You tried to do a bind on a closed socket. Did you forget to
439check the return value of your socket() call? See L<perlfunc/bind>.
440
441=item binmode() on closed filehandle %s
442
443(W unopened) You tried binmode() on a filehandle that was never opened.
444Check you control flow and number of arguments.
445
446=item Bit vector size > 32 non-portable
447
448(W portable) Using bit vector sizes larger than 32 is non-portable.
449
450=item Bizarre copy of %s in %s
451
452(P) Perl detected an attempt to copy an internal value that is not
453copyable.
454
455=item Buffer overflow in prime_env_iter: %s
456
457(W internal) A warning peculiar to VMS. While Perl was preparing to
458iterate over %ENV, it encountered a logical name or symbol definition
459which was too long, so it was truncated to the string shown.
460
461=item Callback called exit
462
463(F) A subroutine invoked from an external package via call_sv()
464exited by calling exit.
465
466=item %s() called too early to check prototype
467
468(W prototype) You've called a function that has a prototype before the
469parser saw a definition or declaration for it, and Perl could not check
470that the call conforms to the prototype. You need to either add an
471early prototype declaration for the subroutine in question, or move the
472subroutine definition ahead of the call to get proper prototype
473checking. Alternatively, if you are certain that you're calling the
474function correctly, you may put an ampersand before the name to avoid
475the warning. See L<perlsub>.
476
477=item Cannot compress integer in pack
478
479(F) An argument to pack("w",...) was too large to compress. The BER
480compressed integer format can only be used with positive integers, and you
481attempted to compress Infinity or a very large number (> 1e308).
482See L<perlfunc/pack>.
483
484=item Cannot compress negative numbers in pack
485
486(F) An argument to pack("w",...) was negative. The BER compressed integer
487format can only be used with positive integers. See L<perlfunc/pack>.
488
489=item Can only compress unsigned integers in pack
490
491(F) An argument to pack("w",...) was not an integer. The BER compressed
492integer format can only be used with positive integers, and you attempted
493to compress something else. See L<perlfunc/pack>.
494
495=item Can't bless non-reference value
496
497(F) Only hard references may be blessed. This is how Perl "enforces"
498encapsulation of objects. See L<perlobj>.
499
500=item Can't call method "%s" in empty package "%s"
501
502(F) You called a method correctly, and it correctly indicated a package
503functioning as a class, but that package doesn't have ANYTHING defined
504in it, let alone methods. See L<perlobj>.
505
506=item Can't call method "%s" on an undefined value
507
508(F) You used the syntax of a method call, but the slot filled by the
509object reference or package name contains an undefined value. Something
510like this will reproduce the error:
511
512 $BADREF = undef;
513 process $BADREF 1,2,3;
514 $BADREF->process(1,2,3);
515
516=item Can't call method "%s" on unblessed reference
517
518(F) A method call must know in what package it's supposed to run. It
519ordinarily finds this out from the object reference you supply, but you
520didn't supply an object reference in this case. A reference isn't an
521object reference until it has been blessed. See L<perlobj>.
522
523=item Can't call method "%s" without a package or object reference
524
525(F) You used the syntax of a method call, but the slot filled by the
526object reference or package name contains an expression that returns a
527defined value which is neither an object reference nor a package name.
528Something like this will reproduce the error:
529
530 $BADREF = 42;
531 process $BADREF 1,2,3;
532 $BADREF->process(1,2,3);
533
534=item Can't chdir to %s
535
536(F) You called C<perl -x/foo/bar>, but C</foo/bar> is not a directory
537that you can chdir to, possibly because it doesn't exist.
538
539=item Can't check filesystem of script "%s" for nosuid
540
541(P) For some reason you can't check the filesystem of the script for
542nosuid.
543
544=item Can't coerce array into hash
545
546(F) You used an array where a hash was expected, but the array has no
547information on how to map from keys to array indices. You can do that
548only with arrays that have a hash reference at index 0.
549
550=item Can't coerce %s to integer in %s
551
552(F) Certain types of SVs, in particular real symbol table entries
553(typeglobs), can't be forced to stop being what they are. So you can't
554say things like:
555
556 *foo += 1;
557
558You CAN say
559
560 $foo = *foo;
561 $foo += 1;
562
563but then $foo no longer contains a glob.
564
565=item Can't coerce %s to number in %s
566
567(F) Certain types of SVs, in particular real symbol table entries
568(typeglobs), can't be forced to stop being what they are.
569
570=item Can't coerce %s to string in %s
571
572(F) Certain types of SVs, in particular real symbol table entries
573(typeglobs), can't be forced to stop being what they are.
574
575=item Can't create pipe mailbox
576
577(P) An error peculiar to VMS. The process is suffering from exhausted
578quotas or other plumbing problems.
579
580=item Can't declare class for non-scalar %s in "%s"
581
582(F) Currently, only scalar variables can be declared with a specific
583class qualifier in a "my" or "our" declaration. The semantics may be
584extended for other types of variables in future.
585
586=item Can't declare %s in "%s"
587
588(F) Only scalar, array, and hash variables may be declared as "my" or
589"our" variables. They must have ordinary identifiers as names.
590
591=item Can't do inplace edit: %s is not a regular file
592
593(S inplace) You tried to use the B<-i> switch on a special file, such as
594a file in /dev, or a FIFO. The file was ignored.
595
596=item Can't do inplace edit on %s: %s
597
598(S inplace) The creation of the new file failed for the indicated
599reason.
600
601=item Can't do inplace edit without backup
602
603(F) You're on a system such as MS-DOS that gets confused if you try
604reading from a deleted (but still opened) file. You have to say
605C<-i.bak>, or some such.
606
607=item Can't do inplace edit: %s would not be unique
608
609(S inplace) Your filesystem does not support filenames longer than 14
610characters and Perl was unable to create a unique filename during
611inplace editing with the B<-i> switch. The file was ignored.
612
613=item Can't do {n,m} with n > m in regex; marked by <-- HERE in m/%s/
614
615(F) Minima must be less than or equal to maxima. If you really want your
616regexp to match something 0 times, just put {0}. The <-- HERE shows in the
617regular expression about where the problem was discovered. See L<perlre>.
618
619=item Can't do setegid!
620
621(P) The setegid() call failed for some reason in the setuid emulator of
622suidperl.
623
624=item Can't do seteuid!
625
626(P) The setuid emulator of suidperl failed for some reason.
627
628=item Can't do setuid
629
630(F) This typically means that ordinary perl tried to exec suidperl to do
631setuid emulation, but couldn't exec it. It looks for a name of the form
632sperl5.000 in the same directory that the perl executable resides under
633the name perl5.000, typically /usr/local/bin on Unix machines. If the
634file is there, check the execute permissions. If it isn't, ask your
635sysadmin why he and/or she removed it.
636
637=item Can't do waitpid with flags
638
639(F) This machine doesn't have either waitpid() or wait4(), so only
640waitpid() without flags is emulated.
641
642=item Can't emulate -%s on #! line
643
644(F) The #! line specifies a switch that doesn't make sense at this
645point. For example, it'd be kind of silly to put a B<-x> on the #!
646line.
647
648=item Can't exec "%s": %s
649
650(W exec) A system(), exec(), or piped open call could not execute the
651named program for the indicated reason. Typical reasons include: the
652permissions were wrong on the file, the file wasn't found in
653C<$ENV{PATH}>, the executable in question was compiled for another
654architecture, or the #! line in a script points to an interpreter that
655can't be run for similar reasons. (Or maybe your system doesn't support
656#! at all.)
657
658=item Can't exec %s
659
660(F) Perl was trying to execute the indicated program for you because
661that's what the #! line said. If that's not what you wanted, you may
662need to mention "perl" on the #! line somewhere.
663
664=item Can't execute %s
665
666(F) You used the B<-S> switch, but the copies of the script to execute
667found in the PATH did not have correct permissions.
668
669=item Can't find an opnumber for "%s"
670
671(F) A string of a form C<CORE::word> was given to prototype(), but there
672is no builtin with the name C<word>.
673
674=item Can't find %s character property "%s"
675
676(F) You used C<\p{}> or C<\P{}> but the character property by that name
677could not be found. Maybe you misspelled the name of the property
678(remember that the names of character properties consist only of
679alphanumeric characters), or maybe you forgot the C<Is> or C<In> prefix?
680
681=item Can't find label %s
682
683(F) You said to goto a label that isn't mentioned anywhere that it's
684possible for us to go to. See L<perlfunc/goto>.
685
686=item Can't find %s on PATH
687
688(F) You used the B<-S> switch, but the script to execute could not be
689found in the PATH.
690
691=item Can't find %s on PATH, '.' not in PATH
692
693(F) You used the B<-S> switch, but the script to execute could not be
694found in the PATH, or at least not with the correct permissions. The
695script exists in the current directory, but PATH prohibits running it.
696
697=item Can't find %s property definition %s
698
699(F) You may have tried to use C<\p> which means a Unicode property (for
700example C<\p{Lu}> is all uppercase letters). If you did mean to use a
701Unicode property, see L<perlunicode> for the list of known properties.
702If you didn't mean to use a Unicode property, escape the C<\p>, either
703by C<\\p> (just the C<\p>) or by C<\Q\p> (the rest of the string, until
704possible C<\E>).
705
706=item Can't find string terminator %s anywhere before EOF
707
708(F) Perl strings can stretch over multiple lines. This message means
709that the closing delimiter was omitted. Because bracketed quotes count
710nesting levels, the following is missing its final parenthesis:
711
712 print q(The character '(' starts a side comment.);
713
714If you're getting this error from a here-document, you may have included
715unseen whitespace before or after your closing tag. A good programmer's
716editor will have a way to help you find these characters.
717
718=item Can't fork
719
720(F) A fatal error occurred while trying to fork while opening a
721pipeline.
722
723=item Can't get filespec - stale stat buffer?
724
725(S) A warning peculiar to VMS. This arises because of the difference
726between access checks under VMS and under the Unix model Perl assumes.
727Under VMS, access checks are done by filename, rather than by bits in
728the stat buffer, so that ACLs and other protections can be taken into
729account. Unfortunately, Perl assumes that the stat buffer contains all
730the necessary information, and passes it, instead of the filespec, to
731the access checking routine. It will try to retrieve the filespec using
732the device name and FID present in the stat buffer, but this works only
733if you haven't made a subsequent call to the CRTL stat() routine,
734because the device name is overwritten with each call. If this warning
735appears, the name lookup failed, and the access checking routine gave up
736and returned FALSE, just to be conservative. (Note: The access checking
737routine knows about the Perl C<stat> operator and file tests, so you
738shouldn't ever see this warning in response to a Perl command; it arises
739only if some internal code takes stat buffers lightly.)
740
741=item Can't get pipe mailbox device name
742
743(P) An error peculiar to VMS. After creating a mailbox to act as a
744pipe, Perl can't retrieve its name for later use.
745
746=item Can't get SYSGEN parameter value for MAXBUF
747
748(P) An error peculiar to VMS. Perl asked $GETSYI how big you want your
749mailbox buffers to be, and didn't get an answer.
750
751=item Can't "goto" into the middle of a foreach loop
752
753(F) A "goto" statement was executed to jump into the middle of a foreach
754loop. You can't get there from here. See L<perlfunc/goto>.
755
756=item Can't "goto" out of a pseudo block
757
758(F) A "goto" statement was executed to jump out of what might look like
759a block, except that it isn't a proper block. This usually occurs if
760you tried to jump out of a sort() block or subroutine, which is a no-no.
761See L<perlfunc/goto>.
762
763=item Can't goto subroutine from an eval-%s
764
765(F) The "goto subroutine" call can't be used to jump out of an eval
766"string" or block.
767
768=item Can't goto subroutine outside a subroutine
769
770(F) The deeply magical "goto subroutine" call can only replace one
771subroutine call for another. It can't manufacture one out of whole
772cloth. In general you should be calling it out of only an AUTOLOAD
773routine anyway. See L<perlfunc/goto>.
774
775=item Can't ignore signal CHLD, forcing to default
776
777(W signal) Perl has detected that it is being run with the SIGCHLD
778signal (sometimes known as SIGCLD) disabled. Since disabling this
779signal will interfere with proper determination of exit status of child
780processes, Perl has reset the signal to its default value. This
781situation typically indicates that the parent program under which Perl
782may be running (e.g. cron) is being very careless.
783
784=item Can't "last" outside a loop block
785
786(F) A "last" statement was executed to break out of the current block,
787except that there's this itty bitty problem called there isn't a current
788block. Note that an "if" or "else" block doesn't count as a "loopish"
789block, as doesn't a block given to sort(), map() or grep(). You can
790usually double the curlies to get the same effect though, because the
791inner curlies will be considered a block that loops once. See
792L<perlfunc/last>.
793
794=item Can't load '%s' for module %s
795
796(F) The module you tried to load failed to load a dynamic extension. This
797may either mean that you upgraded your version of perl to one that is
798incompatible with your old dynamic extensions (which is known to happen
799between major versions of perl), or (more likely) that your dynamic
800extension was built against an older version of the library that is
801installed on your system. You may need to rebuild your old dynamic
802extensions.
803
804=item Can't localize lexical variable %s
805
806(F) You used local on a variable name that was previously declared as a
807lexical variable using "my". This is not allowed. If you want to
808localize a package variable of the same name, qualify it with the
809package name.
810
811=item Can't localize pseudo-hash element
812
813(F) You said something like C<< local $ar->{'key'} >>, where $ar is a
814reference to a pseudo-hash. That hasn't been implemented yet, but you
815can get a similar effect by localizing the corresponding array element
816directly -- C<< local $ar->[$ar->[0]{'key'}] >>.
817
818=item Can't localize through a reference
819
820(F) You said something like C<local $$ref>, which Perl can't currently
821handle, because when it goes to restore the old value of whatever $ref
822pointed to after the scope of the local() is finished, it can't be sure
823that $ref will still be a reference.
824
825=item Can't locate %s
826
827(F) You said to C<do> (or C<require>, or C<use>) a file that couldn't be
828found. Perl looks for the file in all the locations mentioned in @INC,
829unless the file name included the full path to the file. Perhaps you
830need to set the PERL5LIB or PERL5OPT environment variable to say where
831the extra library is, or maybe the script needs to add the library name
832to @INC. Or maybe you just misspelled the name of the file. See
833L<perlfunc/require> and L<lib>.
834
835=item Can't locate auto/%s.al in @INC
836
837(F) A function (or method) was called in a package which allows
838autoload, but there is no function to autoload. Most probable causes
839are a misprint in a function/method name or a failure to C<AutoSplit>
840the file, say, by doing C<make install>.
841
842=item Can't locate loadable object for module %s in @INC
843
844(F) The module you loaded is trying to load an external library, like
845for example, C<foo.so> or C<bar.dll>, but the L<DynaLoader> module was
846unable to locate this library. See L<DynaLoader>.
847
848=item Can't locate object method "%s" via package "%s"
849
850(F) You called a method correctly, and it correctly indicated a package
851functioning as a class, but that package doesn't define that particular
852method, nor does any of its base classes. See L<perlobj>.
853
854=item Can't locate package %s for @%s::ISA
855
856(W syntax) The @ISA array contained the name of another package that
857doesn't seem to exist.
858
859=item Can't locate PerlIO%s
860
861(F) You tried to use in open() a PerlIO layer that does not exist,
862e.g. open(FH, ">:nosuchlayer", "somefile").
863
864=item Can't make list assignment to \%ENV on this system
865
866(F) List assignment to %ENV is not supported on some systems, notably
867VMS.
868
869=item Can't modify %s in %s
870
871(F) You aren't allowed to assign to the item indicated, or otherwise try
872to change it, such as with an auto-increment.
873
874=item Can't modify nonexistent substring
875
876(P) The internal routine that does assignment to a substr() was handed
877a NULL.
878
879=item Can't modify non-lvalue subroutine call
880
881(F) Subroutines meant to be used in lvalue context should be declared as
882such, see L<perlsub/"Lvalue subroutines">.
883
884=item Can't msgrcv to read-only var
885
886(F) The target of a msgrcv must be modifiable to be used as a receive
887buffer.
888
889=item Can't "next" outside a loop block
890
891(F) A "next" statement was executed to reiterate the current block, but
892there isn't a current block. Note that an "if" or "else" block doesn't
893count as a "loopish" block, as doesn't a block given to sort(), map() or
894grep(). You can usually double the curlies to get the same effect
895though, because the inner curlies will be considered a block that loops
896once. See L<perlfunc/next>.
897
898=item Can't open %s: %s
899
900(S inplace) The implicit opening of a file through use of the C<< <> >>
901filehandle, either implicitly under the C<-n> or C<-p> command-line
902switches, or explicitly, failed for the indicated reason. Usually this
903is because you don't have read permission for a file which you named on
904the command line.
905
906=item Can't open a reference
907
908(W io) You tried to open a scalar reference for reading or writing,
909using the 3-arg open() syntax :
910
911 open FH, '>', $ref;
912
913but your version of perl is compiled without perlio, and this form of
914open is not supported.
915
916=item Can't open bidirectional pipe
917
918(W pipe) You tried to say C<open(CMD, "|cmd|")>, which is not supported.
919You can try any of several modules in the Perl library to do this, such
920as IPC::Open2. Alternately, direct the pipe's output to a file using
921">", and then read it in under a different file handle.
922
923=item Can't open error file %s as stderr
924
925(F) An error peculiar to VMS. Perl does its own command line
926redirection, and couldn't open the file specified after '2>' or '2>>' on
927the command line for writing.
928
929=item Can't open input file %s as stdin
930
931(F) An error peculiar to VMS. Perl does its own command line
932redirection, and couldn't open the file specified after '<' on the
933command line for reading.
934
935=item Can't open output file %s as stdout
936
937(F) An error peculiar to VMS. Perl does its own command line
938redirection, and couldn't open the file specified after '>' or '>>' on
939the command line for writing.
940
941=item Can't open output pipe (name: %s)
942
943(P) An error peculiar to VMS. Perl does its own command line
944redirection, and couldn't open the pipe into which to send data destined
945for stdout.
946
947=item Can't open perl script%s
948
949(F) The script you specified can't be opened for the indicated reason.
950
951If you're debugging a script that uses #!, and normally relies on the
952shell's $PATH search, the -S option causes perl to do that search, so
953you don't have to type the path or C<`which $scriptname`>.
954
955=item Can't read CRTL environ
956
957(S) A warning peculiar to VMS. Perl tried to read an element of %ENV
958from the CRTL's internal environment array and discovered the array was
959missing. You need to figure out where your CRTL misplaced its environ
960or define F<PERL_ENV_TABLES> (see L<perlvms>) so that environ is not
961searched.
962
963=item Can't redefine active sort subroutine %s
964
965(F) Perl optimizes the internal handling of sort subroutines and keeps
966pointers into them. You tried to redefine one such sort subroutine when
967it was currently active, which is not allowed. If you really want to do
968this, you should write C<sort { &func } @x> instead of C<sort func @x>.
969
970=item Can't "redo" outside a loop block
971
972(F) A "redo" statement was executed to restart the current block, but
973there isn't a current block. Note that an "if" or "else" block doesn't
974count as a "loopish" block, as doesn't a block given to sort(), map()
975or grep(). You can usually double the curlies to get the same effect
976though, because the inner curlies will be considered a block that
977loops once. See L<perlfunc/redo>.
978
979=item Can't remove %s: %s, skipping file
980
981(S inplace) You requested an inplace edit without creating a backup
982file. Perl was unable to remove the original file to replace it with
983the modified file. The file was left unmodified.
984
985=item Can't rename %s to %s: %s, skipping file
986
987(S inplace) The rename done by the B<-i> switch failed for some reason,
988probably because you don't have write permission to the directory.
989
990=item Can't reopen input pipe (name: %s) in binary mode
991
992(P) An error peculiar to VMS. Perl thought stdin was a pipe, and tried
993to reopen it to accept binary data. Alas, it failed.
994
995=item Can't resolve method `%s' overloading `%s' in package `%s'
996
997(F|P) Error resolving overloading specified by a method name (as opposed
998to a subroutine reference): no such method callable via the package. If
999method name is C<???>, this is an internal error.
1000
1001=item Can't reswap uid and euid
1002
1003(P) The setreuid() call failed for some reason in the setuid emulator of
1004suidperl.
1005
1006=item Can't return %s from lvalue subroutine
1007
1008(F) Perl detected an attempt to return illegal lvalues (such as
1009temporary or readonly values) from a subroutine used as an lvalue. This
1010is not allowed.
1011
1012=item Can't return outside a subroutine
1013
1014(F) The return statement was executed in mainline code, that is, where
1015there was no subroutine call to return out of. See L<perlsub>.
1016
1017=item Can't return %s to lvalue scalar context
1018
1019(F) You tried to return a complete array or hash from an lvalue subroutine,
1020but you called the subroutine in a way that made Perl think you meant
1021to return only one value. You probably meant to write parentheses around
1022the call to the subroutine, which tell Perl that the call should be in
1023list context.
1024
1025=item Can't stat script "%s"
1026
1027(P) For some reason you can't fstat() the script even though you have it
1028open already. Bizarre.
1029
1030=item Can't swap uid and euid
1031
1032(P) The setreuid() call failed for some reason in the setuid emulator of
1033suidperl.
1034
1035=item Can't take log of %g
1036
1037(F) For ordinary real numbers, you can't take the logarithm of a
1038negative number or zero. There's a Math::Complex package that comes
1039standard with Perl, though, if you really want to do that for the
1040negative numbers.
1041
1042=item Can't take sqrt of %g
1043
1044(F) For ordinary real numbers, you can't take the square root of a
1045negative number. There's a Math::Complex package that comes standard
1046with Perl, though, if you really want to do that.
1047
1048=item Can't undef active subroutine
1049
1050(F) You can't undefine a routine that's currently running. You can,
1051however, redefine it while it's running, and you can even undef the
1052redefined subroutine while the old routine is running. Go figure.
1053
1054=item Can't unshift
1055
1056(F) You tried to unshift an "unreal" array that can't be unshifted, such
1057as the main Perl stack.
1058
1059=item Can't upgrade that kind of scalar
1060
1061(P) The internal sv_upgrade routine adds "members" to an SV, making it
1062into a more specialized kind of SV. The top several SV types are so
1063specialized, however, that they cannot be interconverted. This message
1064indicates that such a conversion was attempted.
1065
1066=item Can't upgrade to undef
1067
1068(P) The undefined SV is the bottom of the totem pole, in the scheme of
1069upgradability. Upgrading to undef indicates an error in the code
1070calling sv_upgrade.
1071
1072=item Can't use anonymous symbol table for method lookup
1073
1074(F) The internal routine that does method lookup was handed a symbol
1075table that doesn't have a name. Symbol tables can become anonymous
1076for example by undefining stashes: C<undef %Some::Package::>.
1077
1078=item Can't use an undefined value as %s reference
1079
1080(F) A value used as either a hard reference or a symbolic reference must
1081be a defined value. This helps to delurk some insidious errors.
1082
1083=item Can't use bareword ("%s") as %s ref while "strict refs" in use
1084
1085(F) Only hard references are allowed by "strict refs". Symbolic
1086references are disallowed. See L<perlref>.
1087
1088=item Can't use %! because Errno.pm is not available
1089
1090(F) The first time the %! hash is used, perl automatically loads the
1091Errno.pm module. The Errno module is expected to tie the %! hash to
1092provide symbolic names for C<$!> errno values.
1093
1094=item Can't use %s for loop variable
1095
1096(F) Only a simple scalar variable may be used as a loop variable on a
1097foreach.
1098
1099=item Can't use global %s in "my"
1100
1101(F) You tried to declare a magical variable as a lexical variable. This
1102is not allowed, because the magic can be tied to only one location
1103(namely the global variable) and it would be incredibly confusing to
1104have variables in your program that looked like magical variables but
1105weren't.
1106
1107=item Can't use "my %s" in sort comparison
1108
1109(F) The global variables $a and $b are reserved for sort comparisons.
1110You mentioned $a or $b in the same line as the <=> or cmp operator,
1111and the variable had earlier been declared as a lexical variable.
1112Either qualify the sort variable with the package name, or rename the
1113lexical variable.
1114
1115=item Can't use %s ref as %s ref
1116
1117(F) You've mixed up your reference types. You have to dereference a
1118reference of the type needed. You can use the ref() function to
1119test the type of the reference, if need be.
1120
1121=item Can't use string ("%s") as %s ref while "strict refs" in use
1122
1123(F) Only hard references are allowed by "strict refs". Symbolic
1124references are disallowed. See L<perlref>.
1125
1126=item Can't use subscript on %s
1127
1128(F) The compiler tried to interpret a bracketed expression as a
1129subscript. But to the left of the brackets was an expression that
1130didn't look like a hash or array reference, or anything else subscriptable.
1131
1132=item Can't use \%c to mean $%c in expression
1133
1134(W syntax) In an ordinary expression, backslash is a unary operator that
1135creates a reference to its argument. The use of backslash to indicate a
1136backreference to a matched substring is valid only as part of a regular
1137expression pattern. Trying to do this in ordinary Perl code produces a
1138value that prints out looking like SCALAR(0xdecaf). Use the $1 form
1139instead.
1140
1141=item Can't weaken a nonreference
1142
1143(F) You attempted to weaken something that was not a reference. Only
1144references can be weakened.
1145
1146=item Can't x= to read-only value
1147
1148(F) You tried to repeat a constant value (often the undefined value)
1149with an assignment operator, which implies modifying the value itself.
1150Perhaps you need to copy the value to a temporary, and repeat that.
1151
1152=item Character in "C" format wrapped in pack
1153
1154(W pack) You said
1155
1156 pack("C", $x)
1157
1158where $x is either less than 0 or more than 255; the C<"C"> format is
1159only for encoding native operating system characters (ASCII, EBCDIC,
1160and so on) and not for Unicode characters, so Perl behaved as if you meant
1161
1162 pack("C", $x & 255)
1163
1164If you actually want to pack Unicode codepoints, use the C<"U"> format
1165instead.
1166
1167=item Character in "c" format wrapped in pack
1168
1169(W pack) You said
1170
1171 pack("c", $x)
1172
1173where $x is either less than -128 or more than 127; the C<"c"> format
1174is only for encoding native operating system characters (ASCII, EBCDIC,
1175and so on) and not for Unicode characters, so Perl behaved as if you meant
1176
1177 pack("c", $x & 255);
1178
1179If you actually want to pack Unicode codepoints, use the C<"U"> format
1180instead.
1181
1182=item close() on unopened filehandle %s
1183
1184(W unopened) You tried to close a filehandle that was never opened.
1185
1186=item Code missing after '/'
1187
1188(F) You had a (sub-)template that ends with a '/'. There must be another
1189template code following the slash. See L<perlfunc/pack>.
1190
1191=item %s: Command not found
1192
1193(A) You've accidentally run your script through B<csh> instead of Perl.
1194Check the #! line, or manually feed your script into Perl yourself.
1195
1196=item Compilation failed in require
1197
1198(F) Perl could not compile a file specified in a C<require> statement.
1199Perl uses this generic message when none of the errors that it
1200encountered were severe enough to halt compilation immediately.
1201
1202=item Complex regular subexpression recursion limit (%d) exceeded
1203
1204(W regexp) The regular expression engine uses recursion in complex
1205situations where back-tracking is required. Recursion depth is limited
1206to 32766, or perhaps less in architectures where the stack cannot grow
1207arbitrarily. ("Simple" and "medium" situations are handled without
1208recursion and are not subject to a limit.) Try shortening the string
1209under examination; looping in Perl code (e.g. with C<while>) rather than
1210in the regular expression engine; or rewriting the regular expression so
1211that it is simpler or backtracks less. (See L<perlfaq2> for information
1212on I<Mastering Regular Expressions>.)
1213
1214=item cond_broadcast() called on unlocked variable
1215
1216(W threads) Within a thread-enabled program, you tried to call
1217cond_broadcast() on a variable which wasn't locked. The cond_broadcast()
1218function is used to wake up another thread that is waiting in a
1219cond_wait(). To ensure that the signal isn't sent before the other thread
1220has a chance to enter the wait, it is usual for the signaling thread to
1221first wait for a lock on variable. This lock attempt will only succeed
1222after the other thread has entered cond_wait() and thus relinquished the
1223lock.
1224
1225=item cond_signal() called on unlocked variable
1226
1227(W threads) Within a thread-enabled program, you tried to call
1228cond_signal() on a variable which wasn't locked. The cond_signal()
1229function is used to wake up another thread that is waiting in a
1230cond_wait(). To ensure that the signal isn't sent before the other thread
1231has a chance to enter the wait, it is usual for the signaling thread to
1232first wait for a lock on variable. This lock attempt will only succeed
1233after the other thread has entered cond_wait() and thus relinquished the
1234lock.
1235
1236=item connect() on closed socket %s
1237
1238(W closed) You tried to do a connect on a closed socket. Did you forget
1239to check the return value of your socket() call? See
1240L<perlfunc/connect>.
1241
1242=item Constant(%s)%s: %s
1243
1244(F) The parser found inconsistencies either while attempting to define
1245an overloaded constant, or when trying to find the character name
1246specified in the C<\N{...}> escape. Perhaps you forgot to load the
1247corresponding C<overload> or C<charnames> pragma? See L<charnames> and
1248L<overload>.
1249
1250=item Constant is not %s reference
1251
1252(F) A constant value (perhaps declared using the C<use constant> pragma)
1253is being dereferenced, but it amounts to the wrong type of reference.
1254The message indicates the type of reference that was expected. This
1255usually indicates a syntax error in dereferencing the constant value.
1256See L<perlsub/"Constant Functions"> and L<constant>.
1257
1258=item Constant subroutine %s redefined
1259
1260(S) You redefined a subroutine which had previously been
1261eligible for inlining. See L<perlsub/"Constant Functions"> for
1262commentary and workarounds.
1263
1264=item Constant subroutine %s undefined
1265
1266(W misc) You undefined a subroutine which had previously been eligible
1267for inlining. See L<perlsub/"Constant Functions"> for commentary and
1268workarounds.
1269
1270=item Copy method did not return a reference
1271
1272(F) The method which overloads "=" is buggy. See
1273L<overload/Copy Constructor>.
1274
1275=item CORE::%s is not a keyword
1276
1277(F) The CORE:: namespace is reserved for Perl keywords.
1278
1279=item corrupted regexp pointers
1280
1281(P) The regular expression engine got confused by what the regular
1282expression compiler gave it.
1283
1284=item corrupted regexp program
1285
1286(P) The regular expression engine got passed a regexp program without a
1287valid magic number.
1288
1289=item Corrupt malloc ptr 0x%lx at 0x%lx
1290
1291(P) The malloc package that comes with Perl had an internal failure.
1292
1293=item Count after length/code in unpack
1294
1295(F) You had an unpack template indicating a counted-length string, but
1296you have also specified an explicit size for the string. See
1297L<perlfunc/pack>.
1298
1299=item Deep recursion on subroutine "%s"
1300
1301(W recursion) This subroutine has called itself (directly or indirectly)
1302100 times more than it has returned. This probably indicates an
1303infinite recursion, unless you're writing strange benchmark programs, in
1304which case it indicates something else.
1305
1306=item defined(@array) is deprecated
1307
1308(D deprecated) defined() is not usually useful on arrays because it
1309checks for an undefined I<scalar> value. If you want to see if the
1310array is empty, just use C<if (@array) { # not empty }> for example.
1311
1312=item defined(%hash) is deprecated
1313
1314(D deprecated) defined() is not usually useful on hashes because it
1315checks for an undefined I<scalar> value. If you want to see if the hash
1316is empty, just use C<if (%hash) { # not empty }> for example.
1317
1318=item %s defines neither package nor VERSION--version check failed
1319
1320(F) You said something like "use Module 42" but in the Module file
1321there are neither package declarations nor a C<$VERSION>.
1322
1323=item Delimiter for here document is too long
1324
1325(F) In a here document construct like C<<<FOO>, the label C<FOO> is too
1326long for Perl to handle. You have to be seriously twisted to write code
1327that triggers this error.
1328
1329=item DESTROY created new reference to dead object '%s'
1330
1331(F) A DESTROY() method created a new reference to the object which is
1332just being DESTROYed. Perl is confused, and prefers to abort rather than
1333to create a dangling reference.
1334
1335=item Did not produce a valid header
1336
1337See Server error.
1338
1339=item %s did not return a true value
1340
1341(F) A required (or used) file must return a true value to indicate that
1342it compiled correctly and ran its initialization code correctly. It's
1343traditional to end such a file with a "1;", though any true value would
1344do. See L<perlfunc/require>.
1345
1346=item (Did you mean &%s instead?)
1347
1348(W) You probably referred to an imported subroutine &FOO as $FOO or some
1349such.
1350
1351=item (Did you mean "local" instead of "our"?)
1352
1353(W misc) Remember that "our" does not localize the declared global
1354variable. You have declared it again in the same lexical scope, which
1355seems superfluous.
1356
1357=item (Did you mean $ or @ instead of %?)
1358
1359(W) You probably said %hash{$key} when you meant $hash{$key} or
1360@hash{@keys}. On the other hand, maybe you just meant %hash and got
1361carried away.
1362
1363=item Died
1364
1365(F) You passed die() an empty string (the equivalent of C<die "">) or
1366you called it with no args and both C<$@> and C<$_> were empty.
1367
1368=item Document contains no data
1369
1370See Server error.
1371
1372=item %s does not define %s::VERSION--version check failed
1373
1374(F) You said something like "use Module 42" but the Module did not
1375define a C<$VERSION.>
1376
1377=item '/' does not take a repeat count
1378
1379(F) You cannot put a repeat count of any kind right after the '/' code.
1380See L<perlfunc/pack>.
1381
1382=item Don't know how to handle magic of type '%s'
1383
1384(P) The internal handling of magical variables has been cursed.
1385
1386=item do_study: out of memory
1387
1388(P) This should have been caught by safemalloc() instead.
1389
1390=item (Do you need to predeclare %s?)
1391
1392(S syntax) This is an educated guess made in conjunction with the message
1393"%s found where operator expected". It often means a subroutine or module
1394name is being referenced that hasn't been declared yet. This may be
1395because of ordering problems in your file, or because of a missing
1396"sub", "package", "require", or "use" statement. If you're referencing
1397something that isn't defined yet, you don't actually have to define the
1398subroutine or package before the current location. You can use an empty
1399"sub foo;" or "package FOO;" to enter a "forward" declaration.
1400
1401=item dump() better written as CORE::dump()
1402
1403(W misc) You used the obsolescent C<dump()> built-in function, without fully
1404qualifying it as C<CORE::dump()>. Maybe it's a typo. See L<perlfunc/dump>.
1405
1406=item Duplicate free() ignored
1407
1408(S malloc) An internal routine called free() on something that had
1409already been freed.
1410
1411=item Duplicate modifier '%c' after '%c' in %s
1412
1413(W) You have applied the same modifier more than once after a type
1414in a pack template. See L<perlfunc/pack>.
1415
1416=item elseif should be elsif
1417
1418(S syntax) There is no keyword "elseif" in Perl because Larry thinks it's
1419ugly. Your code will be interpreted as an attempt to call a method named
1420"elseif" for the class returned by the following block. This is
1421unlikely to be what you want.
1422
1423=item Empty %s
1424
1425(F) C<\p> and C<\P> are used to introduce a named Unicode property, as
1426described in L<perlunicode> and L<perlre>. You used C<\p> or C<\P> in
1427a regular expression without specifying the property name.
1428
1429=item entering effective %s failed
1430
1431(F) While under the C<use filetest> pragma, switching the real and
1432effective uids or gids failed.
1433
1434=item %ENV is aliased to %s
1435
1436(F) You're running under taint mode, and the C<%ENV> variable has been
1437aliased to another hash, so it doesn't reflect anymore the state of the
1438program's environment. This is potentially insecure.
1439
1440=item Error converting file specification %s
1441
1442(F) An error peculiar to VMS. Because Perl may have to deal with file
1443specifications in either VMS or Unix syntax, it converts them to a
1444single form when it must operate on them directly. Either you've passed
1445an invalid file specification to Perl, or you've found a case the
1446conversion routines don't handle. Drat.
1447
1448=item %s: Eval-group in insecure regular expression
1449
1450(F) Perl detected tainted data when trying to compile a regular
1451expression that contains the C<(?{ ... })> zero-width assertion, which
1452is unsafe. See L<perlre/(?{ code })>, and L<perlsec>.
1453
1454=item %s: Eval-group not allowed at run time
1455
1456(F) Perl tried to compile a regular expression containing the
1457C<(?{ ... })> zero-width assertion at run time, as it would when the
1458pattern contains interpolated values. Since that is a security risk, it
1459is not allowed. If you insist, you may still do this by explicitly
1460building the pattern from an interpolated string at run time and using
1461that in an eval(). See L<perlre/(?{ code })>.
1462
1463=item %s: Eval-group not allowed, use re 'eval'
1464
1465(F) A regular expression contained the C<(?{ ... })> zero-width
1466assertion, but that construct is only allowed when the C<use re 'eval'>
1467pragma is in effect. See L<perlre/(?{ code })>.
1468
1469=item Excessively long <> operator
1470
1471(F) The contents of a <> operator may not exceed the maximum size of a
1472Perl identifier. If you're just trying to glob a long list of
1473filenames, try using the glob() operator, or put the filenames into a
1474variable and glob that.
1475
1476=item exec? I'm not *that* kind of operating system
1477
1478(F) The C<exec> function is not implemented in MacPerl. See L<perlport>.
1479
1480=item Execution of %s aborted due to compilation errors
1481
1482(F) The final summary message when a Perl compilation fails.
1483
1484=item Exiting eval via %s
1485
1486(W exiting) You are exiting an eval by unconventional means, such as a
1487goto, or a loop control statement.
1488
1489=item Exiting format via %s
1490
1491(W exiting) You are exiting a format by unconventional means, such as a
1492goto, or a loop control statement.
1493
1494=item Exiting pseudo-block via %s
1495
1496(W exiting) You are exiting a rather special block construct (like a
1497sort block or subroutine) by unconventional means, such as a goto, or a
1498loop control statement. See L<perlfunc/sort>.
1499
1500=item Exiting subroutine via %s
1501
1502(W exiting) You are exiting a subroutine by unconventional means, such
1503as a goto, or a loop control statement.
1504
1505=item Exiting substitution via %s
1506
1507(W exiting) You are exiting a substitution by unconventional means, such
1508as a return, a goto, or a loop control statement.
1509
1510=item Explicit blessing to '' (assuming package main)
1511
1512(W misc) You are blessing a reference to a zero length string. This has
1513the effect of blessing the reference into the package main. This is
1514usually not what you want. Consider providing a default target package,
1515e.g. bless($ref, $p || 'MyPackage');
1516
1517=item %s: Expression syntax
1518
1519(A) You've accidentally run your script through B<csh> instead of Perl.
1520Check the #! line, or manually feed your script into Perl yourself.
1521
1522=item %s failed--call queue aborted
1523
1524(F) An untrapped exception was raised while executing a CHECK, INIT, or
1525END subroutine. Processing of the remainder of the queue of such
1526routines has been prematurely ended.
1527
1528=item False [] range "%s" in regex; marked by <-- HERE in m/%s/
1529
1530(W regexp) A character class range must start and end at a literal
1531character, not another character class like C<\d> or C<[:alpha:]>. The "-"
1532in your false range is interpreted as a literal "-". Consider quoting the
1533"-", "\-". The <-- HERE shows in the regular expression about where the
1534problem was discovered. See L<perlre>.
1535
1536=item Fatal VMS error at %s, line %d
1537
1538(P) An error peculiar to VMS. Something untoward happened in a VMS
1539system service or RTL routine; Perl's exit status should provide more
1540details. The filename in "at %s" and the line number in "line %d" tell
1541you which section of the Perl source code is distressed.
1542
1543=item fcntl is not implemented
1544
1545(F) Your machine apparently doesn't implement fcntl(). What is this, a
1546PDP-11 or something?
1547
1548=item Filehandle %s opened only for input
1549
1550(W io) You tried to write on a read-only filehandle. If you intended
1551it to be a read-write filehandle, you needed to open it with "+<" or
1552"+>" or "+>>" instead of with "<" or nothing. If you intended only to
1553write the file, use ">" or ">>". See L<perlfunc/open>.
1554
1555=item Filehandle %s opened only for output
1556
1557(W io) You tried to read from a filehandle opened only for writing, If
1558you intended it to be a read/write filehandle, you needed to open it
1559with "+<" or "+>" or "+>>" instead of with "<" or nothing. If you
1560intended only to read from the file, use "<". See L<perlfunc/open>.
1561Another possibility is that you attempted to open filedescriptor 0
1562(also known as STDIN) for output (maybe you closed STDIN earlier?).
1563
1564=item Filehandle %s reopened as %s only for input
1565
1566(W io) You opened for reading a filehandle that got the same filehandle id
1567as STDOUT or STDERR. This occurred because you closed STDOUT or STDERR
1568previously.
1569
1570=item Filehandle STDIN reopened as %s only for output
1571
1572(W io) You opened for writing a filehandle that got the same filehandle id
1573as STDIN. This occurred because you closed STDIN previously.
1574
1575=item Final $ should be \$ or $name
1576
1577(F) You must now decide whether the final $ in a string was meant to be
1578a literal dollar sign, or was meant to introduce a variable name that
1579happens to be missing. So you have to put either the backslash or the
1580name.
1581
1582=item flock() on closed filehandle %s
1583
1584(W closed) The filehandle you're attempting to flock() got itself closed
1585some time before now. Check your control flow. flock() operates on
1586filehandles. Are you attempting to call flock() on a dirhandle by the
1587same name?
1588
1589=item Format not terminated
1590
1591(F) A format must be terminated by a line with a solitary dot. Perl got
1592to the end of your file without finding such a line.
1593
1594=item Format %s redefined
1595
1596(W redefine) You redefined a format. To suppress this warning, say
1597
1598 {
1599 no warnings 'redefine';
1600 eval "format NAME =...";
1601 }
1602
1603=item Found = in conditional, should be ==
1604
1605(W syntax) You said
1606
1607 if ($foo = 123)
1608
1609when you meant
1610
1611 if ($foo == 123)
1612
1613(or something like that).
1614
1615=item %s found where operator expected
1616
1617(S syntax) The Perl lexer knows whether to expect a term or an operator.
1618If it sees what it knows to be a term when it was expecting to see an
1619operator, it gives you this warning. Usually it indicates that an
1620operator or delimiter was omitted, such as a semicolon.
1621
1622=item gdbm store returned %d, errno %d, key "%s"
1623
1624(S) A warning from the GDBM_File extension that a store failed.
1625
1626=item gethostent not implemented
1627
1628(F) Your C library apparently doesn't implement gethostent(), probably
1629because if it did, it'd feel morally obligated to return every hostname
1630on the Internet.
1631
1632=item get%sname() on closed socket %s
1633
1634(W closed) You tried to get a socket or peer socket name on a closed
1635socket. Did you forget to check the return value of your socket() call?
1636
1637=item getpwnam returned invalid UIC %#o for user "%s"
1638
1639(S) A warning peculiar to VMS. The call to C<sys$getuai> underlying the
1640C<getpwnam> operator returned an invalid UIC.
1641
1642=item getsockopt() on closed socket %s
1643
1644(W closed) You tried to get a socket option on a closed socket. Did you
1645forget to check the return value of your socket() call? See
1646L<perlfunc/getsockopt>.
1647
1648=item Global symbol "%s" requires explicit package name
1649
1650(F) You've said "use strict vars", which indicates that all variables
1651must either be lexically scoped (using "my"), declared beforehand using
1652"our", or explicitly qualified to say which package the global variable
1653is in (using "::").
1654
1655=item glob failed (%s)
1656
1657(W glob) Something went wrong with the external program(s) used for
1658C<glob> and C<< <*.c> >>. Usually, this means that you supplied a
1659C<glob> pattern that caused the external program to fail and exit with a
1660nonzero status. If the message indicates that the abnormal exit
1661resulted in a coredump, this may also mean that your csh (C shell) is
1662broken. If so, you should change all of the csh-related variables in
1663config.sh: If you have tcsh, make the variables refer to it as if it
1664were csh (e.g. C<full_csh='/usr/bin/tcsh'>); otherwise, make them all
1665empty (except that C<d_csh> should be C<'undef'>) so that Perl will
1666think csh is missing. In either case, after editing config.sh, run
1667C<./Configure -S> and rebuild Perl.
1668
1669=item Glob not terminated
1670
1671(F) The lexer saw a left angle bracket in a place where it was expecting
1672a term, so it's looking for the corresponding right angle bracket, and
1673not finding it. Chances are you left some needed parentheses out
1674earlier in the line, and you really meant a "less than".
1675
1676=item Got an error from DosAllocMem
1677
1678(P) An error peculiar to OS/2. Most probably you're using an obsolete
1679version of Perl, and this should not happen anyway.
1680
1681=item goto must have label
1682
1683(F) Unlike with "next" or "last", you're not allowed to goto an
1684unspecified destination. See L<perlfunc/goto>.
1685
1686=item ()-group starts with a count
1687
1688(F) A ()-group started with a count. A count is
1689supposed to follow something: a template character or a ()-group.
1690 See L<perlfunc/pack>.
1691
1692=item %s had compilation errors
1693
1694(F) The final summary message when a C<perl -c> fails.
1695
1696=item Had to create %s unexpectedly
1697
1698(S internal) A routine asked for a symbol from a symbol table that ought
1699to have existed already, but for some reason it didn't, and had to be
1700created on an emergency basis to prevent a core dump.
1701
1702=item Hash %%s missing the % in argument %d of %s()
1703
1704(D deprecated) Really old Perl let you omit the % on hash names in some
1705spots. This is now heavily deprecated.
1706
1707=item %s has too many errors
1708
1709(F) The parser has given up trying to parse the program after 10 errors.
1710Further error messages would likely be uninformative.
1711
1712=item Hexadecimal number > 0xffffffff non-portable
1713
1714(W portable) The hexadecimal number you specified is larger than 2**32-1
1715(4294967295) and therefore non-portable between systems. See
1716L<perlport> for more on portability concerns.
1717
1718=item Identifier too long
1719
1720(F) Perl limits identifiers (names for variables, functions, etc.) to
1721about 250 characters for simple names, and somewhat more for compound
1722names (like C<$A::B>). You've exceeded Perl's limits. Future versions
1723of Perl are likely to eliminate these arbitrary limitations.
1724
1725=item Illegal binary digit %s
1726
1727(F) You used a digit other than 0 or 1 in a binary number.
1728
1729=item Illegal binary digit %s ignored
1730
1731(W digit) You may have tried to use a digit other than 0 or 1 in a
1732binary number. Interpretation of the binary number stopped before the
1733offending digit.
1734
1735=item Illegal character %s (carriage return)
1736
1737(F) Perl normally treats carriage returns in the program text as it
1738would any other whitespace, which means you should never see this error
1739when Perl was built using standard options. For some reason, your
1740version of Perl appears to have been built without this support. Talk
1741to your Perl administrator.
1742
1743=item Illegal character in prototype for %s : %s
1744
1745(W syntax) An illegal character was found in a prototype declaration. Legal
1746characters in prototypes are $, @, %, *, ;, [, ], &, and \.
1747
1748=item Illegal declaration of anonymous subroutine
1749
1750(F) When using the C<sub> keyword to construct an anonymous subroutine,
1751you must always specify a block of code. See L<perlsub>.
1752
1753=item Illegal declaration of subroutine %s
1754
1755(F) A subroutine was not declared correctly. See L<perlsub>.
1756
1757=item Illegal division by zero
1758
1759(F) You tried to divide a number by 0. Either something was wrong in
1760your logic, or you need to put a conditional in to guard against
1761meaningless input.
1762
1763=item Illegal hexadecimal digit %s ignored
1764
1765(W digit) You may have tried to use a character other than 0 - 9 or
1766A - F, a - f in a hexadecimal number. Interpretation of the hexadecimal
1767number stopped before the illegal character.
1768
1769=item Illegal modulus zero
1770
1771(F) You tried to divide a number by 0 to get the remainder. Most
1772numbers don't take to this kindly.
1773
1774=item Illegal number of bits in vec
1775
1776(F) The number of bits in vec() (the third argument) must be a power of
1777two from 1 to 32 (or 64, if your platform supports that).
1778
1779=item Illegal octal digit %s
1780
1781(F) You used an 8 or 9 in an octal number.
1782
1783=item Illegal octal digit %s ignored
1784
1785(W digit) You may have tried to use an 8 or 9 in an octal number.
1786Interpretation of the octal number stopped before the 8 or 9.
1787
1788=item Illegal switch in PERL5OPT: %s
1789
1790(X) The PERL5OPT environment variable may only be used to set the
1791following switches: B<-[DIMUdmtw]>.
1792
1793=item Ill-formed CRTL environ value "%s"
1794
1795(W internal) A warning peculiar to VMS. Perl tried to read the CRTL's
1796internal environ array, and encountered an element without the C<=>
1797delimiter used to separate keys from values. The element is ignored.
1798
1799=item Ill-formed message in prime_env_iter: |%s|
1800
1801(W internal) A warning peculiar to VMS. Perl tried to read a logical
1802name or CLI symbol definition when preparing to iterate over %ENV, and
1803didn't see the expected delimiter between key and value, so the line was
1804ignored.
1805
1806=item (in cleanup) %s
1807
1808(W misc) This prefix usually indicates that a DESTROY() method raised
1809the indicated exception. Since destructors are usually called by the
1810system at arbitrary points during execution, and often a vast number of
1811times, the warning is issued only once for any number of failures that
1812would otherwise result in the same message being repeated.
1813
1814Failure of user callbacks dispatched using the C<G_KEEPERR> flag could
1815also result in this warning. See L<perlcall/G_KEEPERR>.
1816
1817=item In EBCDIC the v-string components cannot exceed 2147483647
1818
1819(F) An error peculiar to EBCDIC. Internally, v-strings are stored as
1820Unicode code points, and encoded in EBCDIC as UTF-EBCDIC. The UTF-EBCDIC
1821encoding is limited to code points no larger than 2147483647 (0x7FFFFFFF).
1822
1823=item Insecure dependency in %s
1824
1825(F) You tried to do something that the tainting mechanism didn't like.
1826The tainting mechanism is turned on when you're running setuid or
1827setgid, or when you specify B<-T> to turn it on explicitly. The
1828tainting mechanism labels all data that's derived directly or indirectly
1829from the user, who is considered to be unworthy of your trust. If any
1830such data is used in a "dangerous" operation, you get this error. See
1831L<perlsec> for more information.
1832
1833=item Insecure directory in %s
1834
1835(F) You can't use system(), exec(), or a piped open in a setuid or
1836setgid script if C<$ENV{PATH}> contains a directory that is writable by
1837the world. Also, the PATH must not contain any relative directory.
1838See L<perlsec>.
1839
1840=item Insecure $ENV{%s} while running %s
1841
1842(F) You can't use system(), exec(), or a piped open in a setuid or
1843setgid script if any of C<$ENV{PATH}>, C<$ENV{IFS}>, C<$ENV{CDPATH}>,
1844C<$ENV{ENV}>, C<$ENV{BASH_ENV}> or C<$ENV{TERM}> are derived from data
1845supplied (or potentially supplied) by the user. The script must set
1846the path to a known value, using trustworthy data. See L<perlsec>.
1847
1848=item Integer overflow in %s number
1849
1850(W overflow) The hexadecimal, octal or binary number you have specified
1851either as a literal or as an argument to hex() or oct() is too big for
1852your architecture, and has been converted to a floating point number.
1853On a 32-bit architecture the largest hexadecimal, octal or binary number
1854representable without overflow is 0xFFFFFFFF, 037777777777, or
18550b11111111111111111111111111111111 respectively. Note that Perl
1856transparently promotes all numbers to a floating point representation
1857internally--subject to loss of precision errors in subsequent
1858operations.
1859
1860=item Internal disaster in regex; marked by <-- HERE in m/%s/
1861
1862(P) Something went badly wrong in the regular expression parser.
1863The <-- HERE shows in the regular expression about where the problem was
1864discovered.
1865
1866=item Internal inconsistency in tracking vforks
1867
1868(S) A warning peculiar to VMS. Perl keeps track of the number of times
1869you've called C<fork> and C<exec>, to determine whether the current call
1870to C<exec> should affect the current script or a subprocess (see
1871L<perlvms/"exec LIST">). Somehow, this count has become scrambled, so
1872Perl is making a guess and treating this C<exec> as a request to
1873terminate the Perl script and execute the specified command.
1874
1875=item Internal urp in regex; marked by <-- HERE in m/%s/
1876
1877(P) Something went badly awry in the regular expression parser. The
1878<-- HERE shows in the regular expression about where the problem was
1879discovered.
1880
1881=item %s (...) interpreted as function
1882
1883(W syntax) You've run afoul of the rule that says that any list operator
1884followed by parentheses turns into a function, with all the list
1885operators arguments found inside the parentheses. See
1886L<perlop/Terms and List Operators (Leftward)>.
1887
1888=item Invalid %s attribute: %s
1889
1890The indicated attribute for a subroutine or variable was not recognized
1891by Perl or by a user-supplied handler. See L<attributes>.
1892
1893=item Invalid %s attributes: %s
1894
1895The indicated attributes for a subroutine or variable were not
1896recognized by Perl or by a user-supplied handler. See L<attributes>.
1897
1898=item Invalid conversion in %s: "%s"
1899
1900(W printf) Perl does not understand the given format conversion. See
1901L<perlfunc/sprintf>.
1902
1903=item Invalid [] range "%s" in regex; marked by <-- HERE in m/%s/
1904
1905(F) The range specified in a character class had a minimum character
1906greater than the maximum character. One possibility is that you forgot the
1907C<{}> from your ending C<\x{}> - C<\x> without the curly braces can go only
1908up to C<ff>. The <-- HERE shows in the regular expression about where the
1909problem was discovered. See L<perlre>.
1910
1911=item Invalid range "%s" in transliteration operator
1912
1913(F) The range specified in the tr/// or y/// operator had a minimum
1914character greater than the maximum character. See L<perlop>.
1915
1916=item Invalid separator character %s in attribute list
1917
1918(F) Something other than a colon or whitespace was seen between the
1919elements of an attribute list. If the previous attribute had a
1920parenthesised parameter list, perhaps that list was terminated too soon.
1921See L<attributes>.
1922
1923=item Invalid separator character %s in PerlIO layer specification %s
1924
1925(W layer) When pushing layers onto the Perl I/O system, something other than a
1926colon or whitespace was seen between the elements of a layer list.
1927If the previous attribute had a parenthesised parameter list, perhaps that
1928list was terminated too soon.
1929
1930=item Invalid type '%s' in %s
1931
1932(F) The given character is not a valid pack or unpack type.
1933See L<perlfunc/pack>.
1934(W) The given character is not a valid pack or unpack type but used to be
1935silently ignored.
1936
1937=item ioctl is not implemented
1938
1939(F) Your machine apparently doesn't implement ioctl(), which is pretty
1940strange for a machine that supports C.
1941
1942=item ioctl() on unopened %s
1943
1944(W unopened) You tried ioctl() on a filehandle that was never opened.
1945Check you control flow and number of arguments.
1946
1947=item IO layers (like "%s") unavailable
1948
1949(F) Your Perl has not been configured to have PerlIO, and therefore
1950you cannot use IO layers. To have PerlIO Perl must be configured
1951with 'useperlio'.
1952
1953=item IO::Socket::atmark not implemented on this architecture
1954
1955(F) Your machine doesn't implement the sockatmark() functionality,
1956neither as a system call or an ioctl call (SIOCATMARK).
1957
1958=item `%s' is not a code reference
1959
1960(W overload) The second (fourth, sixth, ...) argument of overload::constant
1961needs to be a code reference. Either an anonymous subroutine, or a reference
1962to a subroutine.
1963
1964=item `%s' is not an overloadable type
1965
1966(W overload) You tried to overload a constant type the overload package is
1967unaware of.
1968
1969=item junk on end of regexp
1970
1971(P) The regular expression parser is confused.
1972
1973=item Label not found for "last %s"
1974
1975(F) You named a loop to break out of, but you're not currently in a loop
1976of that name, not even if you count where you were called from. See
1977L<perlfunc/last>.
1978
1979=item Label not found for "next %s"
1980
1981(F) You named a loop to continue, but you're not currently in a loop of
1982that name, not even if you count where you were called from. See
1983L<perlfunc/last>.
1984
1985=item Label not found for "redo %s"
1986
1987(F) You named a loop to restart, but you're not currently in a loop of
1988that name, not even if you count where you were called from. See
1989L<perlfunc/last>.
1990
1991=item leaving effective %s failed
1992
1993(F) While under the C<use filetest> pragma, switching the real and
1994effective uids or gids failed.
1995
1996=item length/code after end of string in unpack
1997
1998(F) While unpacking, the string buffer was already used up when an unpack
1999length/code combination tried to obtain more data. This results in
2000an undefined value for the length. See L<perlfunc/pack>.
2001
2002=item listen() on closed socket %s
2003
2004(W closed) You tried to do a listen on a closed socket. Did you forget
2005to check the return value of your socket() call? See
2006L<perlfunc/listen>.
2007
2008=item Lookbehind longer than %d not implemented in regex; marked by <-- HERE in m/%s/
2009
2010(F) There is currently a limit on the length of string which lookbehind can
2011handle. This restriction may be eased in a future release. The <-- HERE
2012shows in the regular expression about where the problem was discovered.
2013
2014=item lstat() on filehandle %s
2015
2016(W io) You tried to do an lstat on a filehandle. What did you mean
2017by that? lstat() makes sense only on filenames. (Perl did a fstat()
2018instead on the filehandle.)
2019
2020=item Lvalue subs returning %s not implemented yet
2021
2022(F) Due to limitations in the current implementation, array and hash
2023values cannot be returned in subroutines used in lvalue context. See
2024L<perlsub/"Lvalue subroutines">.
2025
2026=item Malformed integer in [] in pack
2027
2028(F) Between the brackets enclosing a numeric repeat count only digits
2029are permitted. See L<perlfunc/pack>.
2030
2031=item Malformed integer in [] in unpack
2032
2033(F) Between the brackets enclosing a numeric repeat count only digits
2034are permitted. See L<perlfunc/pack>.
2035
2036=item Malformed PERLLIB_PREFIX
2037
2038(F) An error peculiar to OS/2. PERLLIB_PREFIX should be of the form
2039
2040 prefix1;prefix2
2041
2042or
2043 prefix1 prefix2
2044
2045with nonempty prefix1 and prefix2. If C<prefix1> is indeed a prefix of
2046a builtin library search path, prefix2 is substituted. The error may
2047appear if components are not found, or are too long. See
2048"PERLLIB_PREFIX" in L<perlos2>.
2049
2050=item Malformed prototype for %s: %s
2051
2052(F) You tried to use a function with a malformed prototype. The
2053syntax of function prototypes is given a brief compile-time check for
2054obvious errors like invalid characters. A more rigorous check is run
2055when the function is called.
2056
2057=item Malformed UTF-8 character (%s)
2058
2059(S utf8) (F) Perl detected something that didn't comply with UTF-8
2060encoding rules.
2061
2062One possible cause is that you read in data that you thought to be in
2063UTF-8 but it wasn't (it was for example legacy 8-bit data). Another
2064possibility is careless use of utf8::upgrade().
2065
2066=item Malformed UTF-16 surrogate
2067
2068Perl thought it was reading UTF-16 encoded character data but while
2069doing it Perl met a malformed Unicode surrogate.
2070
2071=item %s matches null string many times in regex; marked by <-- HERE in m/%s/
2072
2073(W regexp) The pattern you've specified would be an infinite loop if the
2074regular expression engine didn't specifically check for that. The <-- HERE
2075shows in the regular expression about where the problem was discovered.
2076See L<perlre>.
2077
2078=item "%s" may clash with future reserved word
2079
2080(W) This warning may be due to running a perl5 script through a perl4
2081interpreter, especially if the word that is being warned about is
2082"use" or "my".
2083
2084=item % may not be used in pack
2085
2086(F) You can't pack a string by supplying a checksum, because the
2087checksumming process loses information, and you can't go the other way.
2088See L<perlfunc/unpack>.
2089
2090=item Method for operation %s not found in package %s during blessing
2091
2092(F) An attempt was made to specify an entry in an overloading table that
2093doesn't resolve to a valid subroutine. See L<overload>.
2094
2095=item Method %s not permitted
2096
2097See Server error.
2098
2099=item Might be a runaway multi-line %s string starting on line %d
2100
2101(S) An advisory indicating that the previous error may have been caused
2102by a missing delimiter on a string or pattern, because it eventually
2103ended earlier on the current line.
2104
2105=item Misplaced _ in number
2106
2107(W syntax) An underscore (underbar) in a numeric constant did not
2108separate two digits.
2109
2110=item Missing argument to -%c
2111
2112(F) The argument to the indicated command line switch must follow
2113immediately after the switch, without intervening spaces.
2114
2115=item Missing %sbrace%s on \N{}
2116
2117(F) Wrong syntax of character name literal C<\N{charname}> within
2118double-quotish context.
2119
2120=item Missing comma after first argument to %s function
2121
2122(F) While certain functions allow you to specify a filehandle or an
2123"indirect object" before the argument list, this ain't one of them.
2124
2125=item Missing command in piped open
2126
2127(W pipe) You used the C<open(FH, "| command")> or
2128C<open(FH, "command |")> construction, but the command was missing or
2129blank.
2130
2131=item Missing control char name in \c
2132
2133(F) A double-quoted string ended with "\c", without the required control
2134character name.
2135
2136=item Missing name in "my sub"
2137
2138(F) The reserved syntax for lexically scoped subroutines requires that
2139they have a name with which they can be found.
2140
2141=item Missing $ on loop variable
2142
2143(F) Apparently you've been programming in B<csh> too much. Variables
2144are always mentioned with the $ in Perl, unlike in the shells, where it
2145can vary from one line to the next.
2146
2147=item (Missing operator before %s?)
2148
2149(S syntax) This is an educated guess made in conjunction with the message
2150"%s found where operator expected". Often the missing operator is a comma.
2151
2152=item Missing right brace on %s
2153
2154(F) Missing right brace in C<\p{...}> or C<\P{...}>.
2155
2156=item Missing right curly or square bracket
2157
2158(F) The lexer counted more opening curly or square brackets than closing
2159ones. As a general rule, you'll find it's missing near the place you
2160were last editing.
2161
2162=item (Missing semicolon on previous line?)
2163
2164(S syntax) This is an educated guess made in conjunction with the message
2165"%s found where operator expected". Don't automatically put a semicolon on
2166the previous line just because you saw this message.
2167
2168=item Modification of a read-only value attempted
2169
2170(F) You tried, directly or indirectly, to change the value of a
2171constant. You didn't, of course, try "2 = 1", because the compiler
2172catches that. But an easy way to do the same thing is:
2173
2174 sub mod { $_[0] = 1 }
2175 mod(2);
2176
2177Another way is to assign to a substr() that's off the end of the string.
2178
2179Yet another way is to assign to a C<foreach> loop I<VAR> when I<VAR>
2180is aliased to a constant in the look I<LIST>:
2181
2182 $x = 1;
2183 foreach my $n ($x, 2) {
2184 $n *= 2; # modifies the $x, but fails on attempt to modify the 2
2185 }
2186
2187=item Modification of non-creatable array value attempted, %s
2188
2189(F) You tried to make an array value spring into existence, and the
2190subscript was probably negative, even counting from end of the array
2191backwards.
2192
2193=item Modification of non-creatable hash value attempted, %s
2194
2195(P) You tried to make a hash value spring into existence, and it
2196couldn't be created for some peculiar reason.
2197
2198=item Module name must be constant
2199
2200(F) Only a bare module name is allowed as the first argument to a "use".
2201
2202=item Module name required with -%c option
2203
2204(F) The C<-M> or C<-m> options say that Perl should load some module, but
2205you omitted the name of the module. Consult L<perlrun> for full details
2206about C<-M> and C<-m>.
2207
2208=item More than one argument to open
2209
2210(F) The C<open> function has been asked to open multiple files. This
2211can happen if you are trying to open a pipe to a command that takes a
2212list of arguments, but have forgotten to specify a piped open mode.
2213See L<perlfunc/open> for details.
2214
2215=item msg%s not implemented
2216
2217(F) You don't have System V message IPC on your system.
2218
2219=item Multidimensional syntax %s not supported
2220
2221(W syntax) Multidimensional arrays aren't written like C<$foo[1,2,3]>.
2222They're written like C<$foo[1][2][3]>, as in C.
2223
2224=item '/' must be followed by 'a*', 'A*' or 'Z*'
2225
2226(F) You had a pack template indicating a counted-length string,
2227Currently the only things that can have their length counted are a*, A*
2228or Z*. See L<perlfunc/pack>.
2229
2230=item '/' must follow a numeric type in unpack
2231
2232(F) You had an unpack template that contained a '/', but this did not
2233follow some unpack specification producing a numeric value.
2234See L<perlfunc/pack>.
2235
2236=item "my sub" not yet implemented
2237
2238(F) Lexically scoped subroutines are not yet implemented. Don't try
2239that yet.
2240
2241=item "my" variable %s can't be in a package
2242
2243(F) Lexically scoped variables aren't in a package, so it doesn't make
2244sense to try to declare one with a package qualifier on the front. Use
2245local() if you want to localize a package variable.
2246
2247=item Name "%s::%s" used only once: possible typo
2248
2249(W once) Typographical errors often show up as unique variable names.
2250If you had a good reason for having a unique name, then just mention it
2251again somehow to suppress the message. The C<our> declaration is
2252provided for this purpose.
2253
2254NOTE: This warning detects symbols that have been used only once so $c, @c,
2255%c, *c, &c, sub c{}, c(), and c (the filehandle or format) are considered
2256the same; if a program uses $c only once but also uses any of the others it
2257will not trigger this warning.
2258
2259=item Negative '/' count in unpack
2260
2261(F) The length count obtained from a length/code unpack operation was
2262negative. See L<perlfunc/pack>.
2263
2264=item Negative length
2265
2266(F) You tried to do a read/write/send/recv operation with a buffer
2267length that is less than 0. This is difficult to imagine.
2268
2269=item Negative offset to vec in lvalue context
2270
2271(F) When C<vec> is called in an lvalue context, the second argument must be
2272greater than or equal to zero.
2273
2274=item Nested quantifiers in regex; marked by <-- HERE in m/%s/
2275
2276(F) You can't quantify a quantifier without intervening parentheses. So
2277things like ** or +* or ?* are illegal. The <-- HERE shows in the regular
2278expression about where the problem was discovered.
2279
2280Note that the minimal matching quantifiers, C<*?>, C<+?>, and
2281C<??> appear to be nested quantifiers, but aren't. See L<perlre>.
2282
2283=item %s never introduced
2284
2285(S internal) The symbol in question was declared but somehow went out of
2286scope before it could possibly have been used.
2287
2288=item Newline in left-justified string for %s
2289
2290(W printf) There is a newline in a string to be left justified by
2291C<printf> or C<sprintf>.
2292
2293The padding spaces will appear after the newline, which is probably not
2294what you wanted. Usually you should remove the newline from the string
2295and put formatting characters in the C<sprintf> format.
2296
2297=item No %s allowed while running setuid
2298
2299(F) Certain operations are deemed to be too insecure for a setuid or
2300setgid script to even be allowed to attempt. Generally speaking there
2301will be another way to do what you want that is, if not secure, at least
2302securable. See L<perlsec>.
2303
2304=item No comma allowed after %s
2305
2306(F) A list operator that has a filehandle or "indirect object" is not
2307allowed to have a comma between that and the following arguments.
2308Otherwise it'd be just another one of the arguments.
2309
2310One possible cause for this is that you expected to have imported a
2311constant to your name space with B<use> or B<import> while no such
2312importing took place, it may for example be that your operating system
2313does not support that particular constant. Hopefully you did use an
2314explicit import list for the constants you expect to see, please see
2315L<perlfunc/use> and L<perlfunc/import>. While an explicit import list
2316would probably have caught this error earlier it naturally does not
2317remedy the fact that your operating system still does not support that
2318constant. Maybe you have a typo in the constants of the symbol import
2319list of B<use> or B<import> or in the constant name at the line where
2320this error was triggered?
2321
2322=item No command into which to pipe on command line
2323
2324(F) An error peculiar to VMS. Perl handles its own command line
2325redirection, and found a '|' at the end of the command line, so it
2326doesn't know where you want to pipe the output from this command.
2327
2328=item No DB::DB routine defined
2329
2330(F) The currently executing code was compiled with the B<-d> switch, but
2331for some reason the current debugger (e.g. F<perl5db.pl> or a C<Devel::>
2332module) didn't define a routine to be called at the beginning of each
2333statement.
2334
2335=item No dbm on this machine
2336
2337(P) This is counted as an internal error, because every machine should
2338supply dbm nowadays, because Perl comes with SDBM. See L<SDBM_File>.
2339
2340=item No DB::sub routine defined
2341
2342(F) The currently executing code was compiled with the B<-d> switch, but
2343for some reason the current debugger (e.g. F<perl5db.pl> or a C<Devel::>
2344module) didn't define a C<DB::sub> routine to be called at the beginning
2345of each ordinary subroutine call.
2346
2347=item No B<-e> allowed in setuid scripts
2348
2349(F) A setuid script can't be specified by the user.
2350
2351=item No error file after 2> or 2>> on command line
2352
2353(F) An error peculiar to VMS. Perl handles its own command line
2354redirection, and found a '2>' or a '2>>' on the command line, but can't
2355find the name of the file to which to write data destined for stderr.
2356
2357=item No group ending character '%c' found in template
2358
2359(F) A pack or unpack template has an opening '(' or '[' without its
2360matching counterpart. See L<perlfunc/pack>.
2361
2362=item No input file after < on command line
2363
2364(F) An error peculiar to VMS. Perl handles its own command line
2365redirection, and found a '<' on the command line, but can't find the
2366name of the file from which to read data for stdin.
2367
2368=item No #! line
2369
2370(F) The setuid emulator requires that scripts have a well-formed #! line
2371even on machines that don't support the #! construct.
2372
2373=item "no" not allowed in expression
2374
2375(F) The "no" keyword is recognized and executed at compile time, and
2376returns no useful value. See L<perlmod>.
2377
2378=item No output file after > on command line
2379
2380(F) An error peculiar to VMS. Perl handles its own command line
2381redirection, and found a lone '>' at the end of the command line, so it
2382doesn't know where you wanted to redirect stdout.
2383
2384=item No output file after > or >> on command line
2385
2386(F) An error peculiar to VMS. Perl handles its own command line
2387redirection, and found a '>' or a '>>' on the command line, but can't
2388find the name of the file to which to write data destined for stdout.
2389
2390=item No package name allowed for variable %s in "our"
2391
2392(F) Fully qualified variable names are not allowed in "our"
2393declarations, because that doesn't make much sense under existing
2394semantics. Such syntax is reserved for future extensions.
2395
2396=item No Perl script found in input
2397
2398(F) You called C<perl -x>, but no line was found in the file beginning
2399with #! and containing the word "perl".
2400
2401=item No setregid available
2402
2403(F) Configure didn't find anything resembling the setregid() call for
2404your system.
2405
2406=item No setreuid available
2407
2408(F) Configure didn't find anything resembling the setreuid() call for
2409your system.
2410
2411=item No %s specified for -%c
2412
2413(F) The indicated command line switch needs a mandatory argument, but
2414you haven't specified one.
2415
2416=item No such class %s
2417
2418(F) You provided a class qualifier in a "my" or "our" declaration, but
2419this class doesn't exist at this point in your program.
2420
2421=item No such pipe open
2422
2423(P) An error peculiar to VMS. The internal routine my_pclose() tried to
2424close a pipe which hadn't been opened. This should have been caught
2425earlier as an attempt to close an unopened filehandle.
2426
2427=item No such pseudo-hash field "%s"
2428
2429(F) You tried to access an array as a hash, but the field name used is
2430not defined. The hash at index 0 should map all valid field names to
2431array indices for that to work.
2432
2433=item No such pseudo-hash field "%s" in variable %s of type %s
2434
2435(F) You tried to access a field of a typed variable where the type does
2436not know about the field name. The field names are looked up in the
2437%FIELDS hash in the type package at compile time. The %FIELDS hash is
2438%usually set up with the 'fields' pragma.
2439
2440=item No such signal: SIG%s
2441
2442(W signal) You specified a signal name as a subscript to %SIG that was
2443not recognized. Say C<kill -l> in your shell to see the valid signal
2444names on your system.
2445
2446=item Not a CODE reference
2447
2448(F) Perl was trying to evaluate a reference to a code value (that is, a
2449subroutine), but found a reference to something else instead. You can
2450use the ref() function to find out what kind of ref it really was. See
2451also L<perlref>.
2452
2453=item Not a format reference
2454
2455(F) I'm not sure how you managed to generate a reference to an anonymous
2456format, but this indicates you did, and that it didn't exist.
2457
2458=item Not a GLOB reference
2459
2460(F) Perl was trying to evaluate a reference to a "typeglob" (that is, a
2461symbol table entry that looks like C<*foo>), but found a reference to
2462something else instead. You can use the ref() function to find out what
2463kind of ref it really was. See L<perlref>.
2464
2465=item Not a HASH reference
2466
2467(F) Perl was trying to evaluate a reference to a hash value, but found a
2468reference to something else instead. You can use the ref() function to
2469find out what kind of ref it really was. See L<perlref>.
2470
2471=item Not an ARRAY reference
2472
2473(F) Perl was trying to evaluate a reference to an array value, but found
2474a reference to something else instead. You can use the ref() function
2475to find out what kind of ref it really was. See L<perlref>.
2476
2477=item Not a perl script
2478
2479(F) The setuid emulator requires that scripts have a well-formed #! line
2480even on machines that don't support the #! construct. The line must
2481mention perl.
2482
2483=item Not a SCALAR reference
2484
2485(F) Perl was trying to evaluate a reference to a scalar value, but found
2486a reference to something else instead. You can use the ref() function
2487to find out what kind of ref it really was. See L<perlref>.
2488
2489=item Not a subroutine reference
2490
2491(F) Perl was trying to evaluate a reference to a code value (that is, a
2492subroutine), but found a reference to something else instead. You can
2493use the ref() function to find out what kind of ref it really was. See
2494also L<perlref>.
2495
2496=item Not a subroutine reference in overload table
2497
2498(F) An attempt was made to specify an entry in an overloading table that
2499doesn't somehow point to a valid subroutine. See L<overload>.
2500
2501=item Not enough arguments for %s
2502
2503(F) The function requires more arguments than you specified.
2504
2505=item Not enough format arguments
2506
2507(W syntax) A format specified more picture fields than the next line
2508supplied. See L<perlform>.
2509
2510=item %s: not found
2511
2512(A) You've accidentally run your script through the Bourne shell instead
2513of Perl. Check the #! line, or manually feed your script into Perl
2514yourself.
2515
2516=item no UTC offset information; assuming local time is UTC
2517
2518(S) A warning peculiar to VMS. Perl was unable to find the local
2519timezone offset, so it's assuming that local system time is equivalent
2520to UTC. If it's not, define the logical name
2521F<SYS$TIMEZONE_DIFFERENTIAL> to translate to the number of seconds which
2522need to be added to UTC to get local time.
2523
2524=item Non-string passed as bitmask
2525
2526(W misc) A number has been passed as a bitmask argument to select().
2527Use the vec() function to construct the file descriptor bitmasks for
2528select. See L<perlfunc/select>
2529
2530=item Null filename used
2531
2532(F) You can't require the null filename, especially because on many
2533machines that means the current directory! See L<perlfunc/require>.
2534
2535=item NULL OP IN RUN
2536
2537(P debugging) Some internal routine called run() with a null opcode
2538pointer.
2539
2540=item Null picture in formline
2541
2542(F) The first argument to formline must be a valid format picture
2543specification. It was found to be empty, which probably means you
2544supplied it an uninitialized value. See L<perlform>.
2545
2546=item Null realloc
2547
2548(P) An attempt was made to realloc NULL.
2549
2550=item NULL regexp argument
2551
2552(P) The internal pattern matching routines blew it big time.
2553
2554=item NULL regexp parameter
2555
2556(P) The internal pattern matching routines are out of their gourd.
2557
2558=item Number too long
2559
2560(F) Perl limits the representation of decimal numbers in programs to
2561about 250 characters. You've exceeded that length. Future
2562versions of Perl are likely to eliminate this arbitrary limitation. In
2563the meantime, try using scientific notation (e.g. "1e6" instead of
2564"1_000_000").
2565
2566=item Octal number in vector unsupported
2567
2568(F) Numbers with a leading C<0> are not currently allowed in vectors.
2569The octal number interpretation of such numbers may be supported in a
2570future version.
2571
2572=item Octal number > 037777777777 non-portable
2573
2574(W portable) The octal number you specified is larger than 2**32-1
2575(4294967295) and therefore non-portable between systems. See
2576L<perlport> for more on portability concerns.
2577
2578See also L<perlport> for writing portable code.
2579
2580=item Odd number of arguments for overload::constant
2581
2582(W overload) The call to overload::constant contained an odd number of
2583arguments. The arguments should come in pairs.
2584
2585=item Odd number of elements in anonymous hash
2586
2587(W misc) You specified an odd number of elements to initialize a hash,
2588which is odd, because hashes come in key/value pairs.
2589
2590=item Odd number of elements in hash assignment
2591
2592(W misc) You specified an odd number of elements to initialize a hash,
2593which is odd, because hashes come in key/value pairs.
2594
2595=item Offset outside string
2596
2597(F) You tried to do a read/write/send/recv operation with an offset
2598pointing outside the buffer. This is difficult to imagine. The sole
2599exception to this is that C<sysread()>ing past the buffer will extend
2600the buffer and zero pad the new area.
2601
2602=item %s() on unopened %s
2603
2604(W unopened) An I/O operation was attempted on a filehandle that was
2605never initialized. You need to do an open(), a sysopen(), or a socket()
2606call, or call a constructor from the FileHandle package.
2607
2608=item -%s on unopened filehandle %s
2609
2610(W unopened) You tried to invoke a file test operator on a filehandle
2611that isn't open. Check your control flow. See also L<perlfunc/-X>.
2612
2613=item oops: oopsAV
2614
2615(S internal) An internal warning that the grammar is screwed up.
2616
2617=item oops: oopsHV
2618
2619(S internal) An internal warning that the grammar is screwed up.
2620
2621=item Operation "%s": no method found, %s
2622
2623(F) An attempt was made to perform an overloaded operation for which no
2624handler was defined. While some handlers can be autogenerated in terms
2625of other handlers, there is no default handler for any operation, unless
2626C<fallback> overloading key is specified to be true. See L<overload>.
2627
2628=item Operator or semicolon missing before %s
2629
2630(S ambiguous) You used a variable or subroutine call where the parser
2631was expecting an operator. The parser has assumed you really meant to
2632use an operator, but this is highly likely to be incorrect. For
2633example, if you say "*foo *foo" it will be interpreted as if you said
2634"*foo * 'foo'".
2635
2636=item "our" variable %s redeclared
2637
2638(W misc) You seem to have already declared the same global once before
2639in the current lexical scope.
2640
2641=item Out of memory!
2642
2643(X) The malloc() function returned 0, indicating there was insufficient
2644remaining memory (or virtual memory) to satisfy the request. Perl has
2645no option but to exit immediately.
2646
2647At least in Unix you may be able to get past this by increasing your
2648process datasize limits: in csh/tcsh use C<limit> and
2649C<limit datasize n> (where C<n> is the number of kilobytes) to check
2650the current limits and change them, and in ksh/bash/zsh use C<ulimit -a>
2651and C<ulimit -d n>, respectively.
2652
2653=item Out of memory during %s extend
2654
2655(X) An attempt was made to extend an array, a list, or a string beyond
2656the largest possible memory allocation.
2657
2658=item Out of memory during "large" request for %s
2659
2660(F) The malloc() function returned 0, indicating there was insufficient
2661remaining memory (or virtual memory) to satisfy the request. However,
2662the request was judged large enough (compile-time default is 64K), so a
2663possibility to shut down by trapping this error is granted.
2664
2665=item Out of memory during request for %s
2666
2667(X|F) The malloc() function returned 0, indicating there was
2668insufficient remaining memory (or virtual memory) to satisfy the
2669request.
2670
2671The request was judged to be small, so the possibility to trap it
2672depends on the way perl was compiled. By default it is not trappable.
2673However, if compiled for this, Perl may use the contents of C<$^M> as an
2674emergency pool after die()ing with this message. In this case the error
2675is trappable I<once>, and the error message will include the line and file
2676where the failed request happened.
2677
2678=item Out of memory during ridiculously large request
2679
2680(F) You can't allocate more than 2^31+"small amount" bytes. This error
2681is most likely to be caused by a typo in the Perl program. e.g.,
2682C<$arr[time]> instead of C<$arr[$time]>.
2683
2684=item Out of memory for yacc stack
2685
2686(F) The yacc parser wanted to grow its stack so it could continue
2687parsing, but realloc() wouldn't give it more memory, virtual or
2688otherwise.
2689
2690=item '@' outside of string in unpack
2691
2692(F) You had a template that specified an absolute position outside
2693the string being unpacked. See L<perlfunc/pack>.
2694
2695=item %s package attribute may clash with future reserved word: %s
2696
2697(W reserved) A lowercase attribute name was used that had a
2698package-specific handler. That name might have a meaning to Perl itself
2699some day, even though it doesn't yet. Perhaps you should use a
2700mixed-case attribute name, instead. See L<attributes>.
2701
2702=item pack/unpack repeat count overflow
2703
2704(F) You can't specify a repeat count so large that it overflows your
2705signed integers. See L<perlfunc/pack>.
2706
2707=item page overflow
2708
2709(W io) A single call to write() produced more lines than can fit on a
2710page. See L<perlform>.
2711
2712=item panic: %s
2713
2714(P) An internal error.
2715
2716=item panic: ck_grep
2717
2718(P) Failed an internal consistency check trying to compile a grep.
2719
2720=item panic: ck_split
2721
2722(P) Failed an internal consistency check trying to compile a split.
2723
2724=item panic: corrupt saved stack index
2725
2726(P) The savestack was requested to restore more localized values than
2727there are in the savestack.
2728
2729=item panic: del_backref
2730
2731(P) Failed an internal consistency check while trying to reset a weak
2732reference.
2733
2734=item panic: Devel::DProf inconsistent subroutine return
2735
2736(P) Devel::DProf called a subroutine that exited using goto(LABEL),
2737last(LABEL) or next(LABEL). Leaving that way a subroutine called from
2738an XSUB will lead very probably to a crash of the interpreter. This is
2739a bug that will hopefully one day get fixed.
2740
2741=item panic: die %s
2742
2743(P) We popped the context stack to an eval context, and then discovered
2744it wasn't an eval context.
2745
2746=item panic: do_subst
2747
2748(P) The internal pp_subst() routine was called with invalid operational
2749data.
2750
2751=item panic: do_trans_%s
2752
2753(P) The internal do_trans routines were called with invalid operational
2754data.
2755
2756=item panic: frexp
2757
2758(P) The library function frexp() failed, making printf("%f") impossible.
2759
2760=item panic: goto
2761
2762(P) We popped the context stack to a context with the specified label,
2763and then discovered it wasn't a context we know how to do a goto in.
2764
2765=item panic: INTERPCASEMOD
2766
2767(P) The lexer got into a bad state at a case modifier.
2768
2769=item panic: INTERPCONCAT
2770
2771(P) The lexer got into a bad state parsing a string with brackets.
2772
2773=item panic: kid popen errno read
2774
2775(F) forked child returned an incomprehensible message about its errno.
2776
2777=item panic: last
2778
2779(P) We popped the context stack to a block context, and then discovered
2780it wasn't a block context.
2781
2782=item panic: leave_scope clearsv
2783
2784(P) A writable lexical variable became read-only somehow within the
2785scope.
2786
2787=item panic: leave_scope inconsistency
2788
2789(P) The savestack probably got out of sync. At least, there was an
2790invalid enum on the top of it.
2791
2792=item panic: magic_killbackrefs
2793
2794(P) Failed an internal consistency check while trying to reset all weak
2795references to an object.
2796
2797=item panic: malloc
2798
2799(P) Something requested a negative number of bytes of malloc.
2800
2801=item panic: mapstart
2802
2803(P) The compiler is screwed up with respect to the map() function.
2804
2805=item panic: memory wrap
2806
2807(P) Something tried to allocate more memory than possible.
2808
2809=item panic: null array
2810
2811(P) One of the internal array routines was passed a null AV pointer.
2812
2813=item panic: pad_alloc
2814
2815(P) The compiler got confused about which scratch pad it was allocating
2816and freeing temporaries and lexicals from.
2817
2818=item panic: pad_free curpad
2819
2820(P) The compiler got confused about which scratch pad it was allocating
2821and freeing temporaries and lexicals from.
2822
2823=item panic: pad_free po
2824
2825(P) An invalid scratch pad offset was detected internally.
2826
2827=item panic: pad_reset curpad
2828
2829(P) The compiler got confused about which scratch pad it was allocating
2830and freeing temporaries and lexicals from.
2831
2832=item panic: pad_sv po
2833
2834(P) An invalid scratch pad offset was detected internally.
2835
2836=item panic: pad_swipe curpad
2837
2838(P) The compiler got confused about which scratch pad it was allocating
2839and freeing temporaries and lexicals from.
2840
2841=item panic: pad_swipe po
2842
2843(P) An invalid scratch pad offset was detected internally.
2844
2845=item panic: pp_iter
2846
2847(P) The foreach iterator got called in a non-loop context frame.
2848
2849=item panic: pp_match%s
2850
2851(P) The internal pp_match() routine was called with invalid operational
2852data.
2853
2854=item panic: pp_split
2855
2856(P) Something terrible went wrong in setting up for the split.
2857
2858=item panic: realloc
2859
2860(P) Something requested a negative number of bytes of realloc.
2861
2862=item panic: restartop
2863
2864(P) Some internal routine requested a goto (or something like it), and
2865didn't supply the destination.
2866
2867=item panic: return
2868
2869(P) We popped the context stack to a subroutine or eval context, and
2870then discovered it wasn't a subroutine or eval context.
2871
2872=item panic: scan_num
2873
2874(P) scan_num() got called on something that wasn't a number.
2875
2876=item panic: sv_insert
2877
2878(P) The sv_insert() routine was told to remove more string than there
2879was string.
2880
2881=item panic: top_env
2882
2883(P) The compiler attempted to do a goto, or something weird like that.
2884
2885=item panic: utf16_to_utf8: odd bytelen
2886
2887(P) Something tried to call utf16_to_utf8 with an odd (as opposed
2888to even) byte length.
2889
2890=item panic: yylex
2891
2892(P) The lexer got into a bad state while processing a case modifier.
2893
2894=item Parentheses missing around "%s" list
2895
2896(W parenthesis) You said something like
2897
2898 my $foo, $bar = @_;
2899
2900when you meant
2901
2902 my ($foo, $bar) = @_;
2903
2904Remember that "my", "our", and "local" bind tighter than comma.
2905
2906=item C<-p> destination: %s
2907
2908(F) An error occurred during the implicit output invoked by the C<-p>
2909command-line switch. (This output goes to STDOUT unless you've
2910redirected it with select().)
2911
2912=item (perhaps you forgot to load "%s"?)
2913
2914(F) This is an educated guess made in conjunction with the message
2915"Can't locate object method \"%s\" via package \"%s\"". It often means
2916that a method requires a package that has not been loaded.
2917
2918=item Perl %s required--this is only version %s, stopped
2919
2920(F) The module in question uses features of a version of Perl more
2921recent than the currently running version. How long has it been since
2922you upgraded, anyway? See L<perlfunc/require>.
2923
2924=item PERL_SH_DIR too long
2925
2926(F) An error peculiar to OS/2. PERL_SH_DIR is the directory to find the
2927C<sh>-shell in. See "PERL_SH_DIR" in L<perlos2>.
2928
2929=item PERL_SIGNALS illegal: "%s"
2930
2931See L<perlrun/PERL_SIGNALS> for legal values.
2932
2933=item perl: warning: Setting locale failed.
2934
2935(S) The whole warning message will look something like:
2936
2937 perl: warning: Setting locale failed.
2938 perl: warning: Please check that your locale settings:
2939 LC_ALL = "En_US",
2940 LANG = (unset)
2941 are supported and installed on your system.
2942 perl: warning: Falling back to the standard locale ("C").
2943
2944Exactly what were the failed locale settings varies. In the above the
2945settings were that the LC_ALL was "En_US" and the LANG had no value.
2946This error means that Perl detected that you and/or your operating
2947system supplier and/or system administrator have set up the so-called
2948locale system but Perl could not use those settings. This was not
2949dead serious, fortunately: there is a "default locale" called "C" that
2950Perl can and will use, the script will be run. Before you really fix
2951the problem, however, you will get the same error message each time
2952you run Perl. How to really fix the problem can be found in
2953L<perllocale> section B<LOCALE PROBLEMS>.
2954
2955=item Permission denied
2956
2957(F) The setuid emulator in suidperl decided you were up to no good.
2958
2959=item pid %x not a child
2960
2961(W exec) A warning peculiar to VMS. Waitpid() was asked to wait for a
2962process which isn't a subprocess of the current process. While this is
2963fine from VMS' perspective, it's probably not what you intended.
2964
2965=item 'P' must have an explicit size in unpack
2966
2967(F) The unpack format P must have an explicit size, not "*".
2968
2969=item B<-P> not allowed for setuid/setgid script
2970
2971(F) The script would have to be opened by the C preprocessor by name,
2972which provides a race condition that breaks security.
2973
2974=item POSIX class [:%s:] unknown in regex; marked by <-- HERE in m/%s/
2975
2976(F) The class in the character class [: :] syntax is unknown. The <-- HERE
2977shows in the regular expression about where the problem was discovered.
2978Note that the POSIX character classes do B<not> have the C<is> prefix
2979the corresponding C interfaces have: in other words, it's C<[[:print:]]>,
2980not C<isprint>. See L<perlre>.
2981
2982=item POSIX getpgrp can't take an argument
2983
2984(F) Your system has POSIX getpgrp(), which takes no argument, unlike
2985the BSD version, which takes a pid.
2986
2987=item POSIX syntax [%s] belongs inside character classes in regex; marked by <-- HERE in m/%s/
2988
2989(W regexp) The character class constructs [: :], [= =], and [. .] go
2990I<inside> character classes, the [] are part of the construct, for example:
2991/[012[:alpha:]345]/. Note that [= =] and [. .] are not currently
2992implemented; they are simply placeholders for future extensions and will
2993cause fatal errors. The <-- HERE shows in the regular expression about
2994where the problem was discovered. See L<perlre>.
2995
2996=item POSIX syntax [. .] is reserved for future extensions in regex; marked by <-- HERE in m/%s/
2997
2998(F regexp) Within regular expression character classes ([]) the syntax
2999beginning with "[." and ending with ".]" is reserved for future extensions.
3000If you need to represent those character sequences inside a regular
3001expression character class, just quote the square brackets with the
3002backslash: "\[." and ".\]". The <-- HERE shows in the regular expression
3003about where the problem was discovered. See L<perlre>.
3004
3005=item POSIX syntax [= =] is reserved for future extensions in regex; marked by <-- HERE in m/%s/
3006
3007(F) Within regular expression character classes ([]) the syntax beginning
3008with "[=" and ending with "=]" is reserved for future extensions. If you
3009need to represent those character sequences inside a regular expression
3010character class, just quote the square brackets with the backslash: "\[="
3011and "=\]". The <-- HERE shows in the regular expression about where the
3012problem was discovered. See L<perlre>.
3013
3014=item Possible attempt to put comments in qw() list
3015
3016(W qw) qw() lists contain items separated by whitespace; as with literal
3017strings, comment characters are not ignored, but are instead treated as
3018literal data. (You may have used different delimiters than the
3019parentheses shown here; braces are also frequently used.)
3020
3021You probably wrote something like this:
3022
3023 @list = qw(
3024 a # a comment
3025 b # another comment
3026 );
3027
3028when you should have written this:
3029
3030 @list = qw(
3031 a
3032 b
3033 );
3034
3035If you really want comments, build your list the
3036old-fashioned way, with quotes and commas:
3037
3038 @list = (
3039 'a', # a comment
3040 'b', # another comment
3041 );
3042
3043=item Possible attempt to separate words with commas
3044
3045(W qw) qw() lists contain items separated by whitespace; therefore
3046commas aren't needed to separate the items. (You may have used
3047different delimiters than the parentheses shown here; braces are also
3048frequently used.)
3049
3050You probably wrote something like this:
3051
3052 qw! a, b, c !;
3053
3054which puts literal commas into some of the list items. Write it without
3055commas if you don't want them to appear in your data:
3056
3057 qw! a b c !;
3058
3059=item Possible memory corruption: %s overflowed 3rd argument
3060
3061(F) An ioctl() or fcntl() returned more than Perl was bargaining for.
3062Perl guesses a reasonable buffer size, but puts a sentinel byte at the
3063end of the buffer just in case. This sentinel byte got clobbered, and
3064Perl assumes that memory is now corrupted. See L<perlfunc/ioctl>.
3065
3066=item Possible precedence problem on bitwise %c operator
3067
3068(W precedence) Your program uses a bitwise logical operator in conjunction
3069with a numeric comparison operator, like this :
3070
3071 if ($x & $y == 0) { ... }
3072
3073This expression is actually equivalent to C<$x & ($y == 0)>, due to the
3074higher precedence of C<==>. This is probably not what you want. (If you
3075really meant to write this, disable the warning, or, better, put the
3076parentheses explicitly and write C<$x & ($y == 0)>).
3077
3078=item Possible unintended interpolation of %s in string
3079
3080(W ambiguous) You said something like `@foo' in a double-quoted string
3081but there was no array C<@foo> in scope at the time. If you wanted a
3082literal @foo, then write it as \@foo; otherwise find out what happened
3083to the array you apparently lost track of.
3084
3085=item Possible Y2K bug: %s
3086
3087(W y2k) You are concatenating the number 19 with another number, which
3088could be a potential Year 2000 problem.
3089
3090=item pragma "attrs" is deprecated, use "sub NAME : ATTRS" instead
3091
3092(D deprecated) You have written something like this:
3093
3094 sub doit
3095 {
3096 use attrs qw(locked);
3097 }
3098
3099You should use the new declaration syntax instead.
3100
3101 sub doit : locked
3102 {
3103 ...
3104
3105The C<use attrs> pragma is now obsolete, and is only provided for
3106backward-compatibility. See L<perlsub/"Subroutine Attributes">.
3107
3108=item Precedence problem: open %s should be open(%s)
3109
3110(S precedence) The old irregular construct
3111
3112 open FOO || die;
3113
3114is now misinterpreted as
3115
3116 open(FOO || die);
3117
3118because of the strict regularization of Perl 5's grammar into unary and
3119list operators. (The old open was a little of both.) You must put
3120parentheses around the filehandle, or use the new "or" operator instead
3121of "||".
3122
3123=item Premature end of script headers
3124
3125See Server error.
3126
3127=item printf() on closed filehandle %s
3128
3129(W closed) The filehandle you're writing to got itself closed sometime
3130before now. Check your control flow.
3131
3132=item print() on closed filehandle %s
3133
3134(W closed) The filehandle you're printing on got itself closed sometime
3135before now. Check your control flow.
3136
3137=item Process terminated by SIG%s
3138
3139(W) This is a standard message issued by OS/2 applications, while *nix
3140applications die in silence. It is considered a feature of the OS/2
3141port. One can easily disable this by appropriate sighandlers, see
3142L<perlipc/"Signals">. See also "Process terminated by SIGTERM/SIGINT"
3143in L<perlos2>.
3144
3145=item Prototype mismatch: %s vs %s
3146
3147(S prototype) The subroutine being declared or defined had previously been
3148declared or defined with a different function prototype.
3149
3150=item Prototype not terminated
3151
3152(F) You've omitted the closing parenthesis in a function prototype
3153definition.
3154
3155=item Pseudo-hashes are deprecated
3156
3157(D deprecated) Pseudo-hashes were deprecated in Perl 5.8.0 and they
3158will be removed in Perl 5.10.0, see L<perl58delta> for more details.
3159You can continue to use the C<fields> pragma.
3160
3161=item Quantifier follows nothing in regex; marked by <-- HERE in m/%s/
3162
3163(F) You started a regular expression with a quantifier. Backslash it if you
3164meant it literally. The <-- HERE shows in the regular expression about
3165where the problem was discovered. See L<perlre>.
3166
3167=item Quantifier in {,} bigger than %d in regex; marked by <-- HERE in m/%s/
3168
3169(F) There is currently a limit to the size of the min and max values of the
3170{min,max} construct. The <-- HERE shows in the regular expression about where
3171the problem was discovered. See L<perlre>.
3172
3173=item Quantifier unexpected on zero-length expression; marked by <-- HERE in m/%s/
3174
3175(W regexp) You applied a regular expression quantifier in a place where
3176it makes no sense, such as on a zero-width assertion. Try putting the
3177quantifier inside the assertion instead. For example, the way to match
3178"abc" provided that it is followed by three repetitions of "xyz" is
3179C</abc(?=(?:xyz){3})/>, not C</abc(?=xyz){3}/>.
3180
3181The <-- HERE shows in the regular expression about where the problem was
3182discovered.
3183
3184=item Range iterator outside integer range
3185
3186(F) One (or both) of the numeric arguments to the range operator ".."
3187are outside the range which can be represented by integers internally.
3188One possible workaround is to force Perl to use magical string increment
3189by prepending "0" to your numbers.
3190
3191=item readline() on closed filehandle %s
3192
3193(W closed) The filehandle you're reading from got itself closed sometime
3194before now. Check your control flow.
3195
3196=item read() on closed filehandle %s
3197
3198(W closed) You tried to read from a closed filehandle.
3199
3200=item read() on unopened filehandle %s
3201
3202(W unopened) You tried to read from a filehandle that was never opened.
3203
3204=item Reallocation too large: %lx
3205
3206(F) You can't allocate more than 64K on an MS-DOS machine.
3207
3208=item realloc() of freed memory ignored
3209
3210(S malloc) An internal routine called realloc() on something that had
3211already been freed.
3212
3213=item Recompile perl with B<-D>DEBUGGING to use B<-D> switch
3214
3215(F debugging) You can't use the B<-D> option unless the code to produce
3216the desired output is compiled into Perl, which entails some overhead,
3217which is why it's currently left out of your copy.
3218
3219=item Recursive inheritance detected in package '%s'
3220
3221(F) More than 100 levels of inheritance were used. Probably indicates
3222an unintended loop in your inheritance hierarchy.
3223
3224=item Recursive inheritance detected while looking for method %s
3225
3226(F) More than 100 levels of inheritance were encountered while invoking
3227a method. Probably indicates an unintended loop in your inheritance
3228hierarchy.
3229
3230=item Reference found where even-sized list expected
3231
3232(W misc) You gave a single reference where Perl was expecting a list
3233with an even number of elements (for assignment to a hash). This usually
3234means that you used the anon hash constructor when you meant to use
3235parens. In any case, a hash requires key/value B<pairs>.
3236
3237 %hash = { one => 1, two => 2, }; # WRONG
3238 %hash = [ qw/ an anon array / ]; # WRONG
3239 %hash = ( one => 1, two => 2, ); # right
3240 %hash = qw( one 1 two 2 ); # also fine
3241
3242=item Reference is already weak
3243
3244(W misc) You have attempted to weaken a reference that is already weak.
3245Doing so has no effect.
3246
3247=item Reference miscount in sv_replace()
3248
3249(W internal) The internal sv_replace() function was handed a new SV with
3250a reference count of other than 1.
3251
3252=item Reference to nonexistent group in regex; marked by <-- HERE in m/%s/
3253
3254(F) You used something like C<\7> in your regular expression, but there are
3255not at least seven sets of capturing parentheses in the expression. If you
3256wanted to have the character with value 7 inserted into the regular expression,
3257prepend a zero to make the number at least two digits: C<\07>
3258
3259The <-- HERE shows in the regular expression about where the problem was
3260discovered.
3261
3262=item regexp memory corruption
3263
3264(P) The regular expression engine got confused by what the regular
3265expression compiler gave it.
3266
3267=item Regexp out of space
3268
3269(P) A "can't happen" error, because safemalloc() should have caught it
3270earlier.
3271
3272=item Repeated format line will never terminate (~~ and @# incompatible)
3273
3274(F) Your format contains the ~~ repeat-until-blank sequence and a
3275numeric field that will never go blank so that the repetition never
3276terminates. You might use ^# instead. See L<perlform>.
3277
3278=item Reversed %s= operator
3279
3280(W syntax) You wrote your assignment operator backwards. The = must
3281always comes last, to avoid ambiguity with subsequent unary operators.
3282
3283=item Runaway format
3284
3285(F) Your format contained the ~~ repeat-until-blank sequence, but it
3286produced 200 lines at once, and the 200th line looked exactly like the
3287199th line. Apparently you didn't arrange for the arguments to exhaust
3288themselves, either by using ^ instead of @ (for scalar variables), or by
3289shifting or popping (for array variables). See L<perlform>.
3290
3291=item Scalars leaked: %d
3292
3293(P) Something went wrong in Perl's internal bookkeeping of scalars:
3294not all scalar variables were deallocated by the time Perl exited.
3295What this usually indicates is a memory leak, which is of course bad,
3296especially if the Perl program is intended to be long-running.
3297
3298=item Scalar value @%s[%s] better written as $%s[%s]
3299
3300(W syntax) You've used an array slice (indicated by @) to select a
3301single element of an array. Generally it's better to ask for a scalar
3302value (indicated by $). The difference is that C<$foo[&bar]> always
3303behaves like a scalar, both when assigning to it and when evaluating its
3304argument, while C<@foo[&bar]> behaves like a list when you assign to it,
3305and provides a list context to its subscript, which can do weird things
3306if you're expecting only one subscript.
3307
3308On the other hand, if you were actually hoping to treat the array
3309element as a list, you need to look into how references work, because
3310Perl will not magically convert between scalars and lists for you. See
3311L<perlref>.
3312
3313=item Scalar value @%s{%s} better written as $%s{%s}
3314
3315(W syntax) You've used a hash slice (indicated by @) to select a single
3316element of a hash. Generally it's better to ask for a scalar value
3317(indicated by $). The difference is that C<$foo{&bar}> always behaves
3318like a scalar, both when assigning to it and when evaluating its
3319argument, while C<@foo{&bar}> behaves like a list when you assign to it,
3320and provides a list context to its subscript, which can do weird things
3321if you're expecting only one subscript.
3322
3323On the other hand, if you were actually hoping to treat the hash element
3324as a list, you need to look into how references work, because Perl will
3325not magically convert between scalars and lists for you. See
3326L<perlref>.
3327
3328=item Script is not setuid/setgid in suidperl
3329
3330(F) Oddly, the suidperl program was invoked on a script without a setuid
3331or setgid bit set. This doesn't make much sense.
3332
3333=item Search pattern not terminated
3334
3335(F) The lexer couldn't find the final delimiter of a // or m{}
3336construct. Remember that bracketing delimiters count nesting level.
3337Missing the leading C<$> from a variable C<$m> may cause this error.
3338
3339Note that since Perl 5.9.0 a // can also be the I<defined-or>
3340construct, not just the empty search pattern. Therefore code written
3341in Perl 5.9.0 or later that uses the // as the I<defined-or> can be
3342misparsed by pre-5.9.0 Perls as a non-terminated search pattern.
3343
3344=item Search pattern not terminated or ternary operator parsed as search pattern
3345
3346(F) The lexer couldn't find the final delimiter of a C<?PATTERN?>
3347construct.
3348
3349The question mark is also used as part of the ternary operator (as in
3350C<foo ? 0 : 1>) leading to some ambiguous constructions being wrongly
3351parsed. One way to disambiguate the parsing is to put parentheses around
3352the conditional expression, i.e. C<(foo) ? 0 : 1>.
3353
3354=item %sseek() on unopened filehandle
3355
3356(W unopened) You tried to use the seek() or sysseek() function on a
3357filehandle that was either never opened or has since been closed.
3358
3359=item select not implemented
3360
3361(F) This machine doesn't implement the select() system call.
3362
3363=item Self-ties of arrays and hashes are not supported
3364
3365(F) Self-ties are of arrays and hashes are not supported in
3366the current implementation.
3367
3368=item Semicolon seems to be missing
3369
3370(W semicolon) A nearby syntax error was probably caused by a missing
3371semicolon, or possibly some other missing operator, such as a comma.
3372
3373=item semi-panic: attempt to dup freed string
3374
3375(S internal) The internal newSVsv() routine was called to duplicate a
3376scalar that had previously been marked as free.
3377
3378=item sem%s not implemented
3379
3380(F) You don't have System V semaphore IPC on your system.
3381
3382=item send() on closed socket %s
3383
3384(W closed) The socket you're sending to got itself closed sometime
3385before now. Check your control flow.
3386
3387=item Sequence (? incomplete in regex; marked by <-- HERE in m/%s/
3388
3389(F) A regular expression ended with an incomplete extension (?. The <-- HERE
3390shows in the regular expression about where the problem was discovered. See
3391L<perlre>.
3392
3393=item Sequence (?%s...) not implemented in regex; marked by <-- HERE in m/%s/
3394
3395(F) A proposed regular expression extension has the character reserved but
3396has not yet been written. The <-- HERE shows in the regular expression about
3397where the problem was discovered. See L<perlre>.
3398
3399=item Sequence (?%s...) not recognized in regex; marked by <-- HERE in m/%s/
3400
3401(F) You used a regular expression extension that doesn't make sense. The
3402<-- HERE shows in the regular expression about where the problem was
3403discovered. See L<perlre>.
3404
3405=item Sequence (?#... not terminated in regex; marked by <-- HERE in m/%s/
3406
3407(F) A regular expression comment must be terminated by a closing
3408parenthesis. Embedded parentheses aren't allowed. The <-- HERE shows in
3409the regular expression about where the problem was discovered. See
3410L<perlre>.
3411
3412=item Sequence (?{...}) not terminated or not {}-balanced in regex; marked by <-- HERE in m/%s/
3413
3414(F) If the contents of a (?{...}) clause contains braces, they must balance
3415for Perl to properly detect the end of the clause. The <-- HERE shows in
3416the regular expression about where the problem was discovered. See
3417L<perlre>.
3418
3419=item 500 Server error
3420
3421See Server error.
3422
3423=item Server error
3424
3425This is the error message generally seen in a browser window when trying
3426to run a CGI program (including SSI) over the web. The actual error text
3427varies widely from server to server. The most frequently-seen variants
3428are "500 Server error", "Method (something) not permitted", "Document
3429contains no data", "Premature end of script headers", and "Did not
3430produce a valid header".
3431
3432B<This is a CGI error, not a Perl error>.
3433
3434You need to make sure your script is executable, is accessible by the
3435user CGI is running the script under (which is probably not the user
3436account you tested it under), does not rely on any environment variables
3437(like PATH) from the user it isn't running under, and isn't in a
3438location where the CGI server can't find it, basically, more or less.
3439Please see the following for more information:
3440
3441 http://www.perl.org/CGI_MetaFAQ.html
3442 http://www.htmlhelp.org/faq/cgifaq.html
3443 http://www.w3.org/Security/Faq/
3444
3445You should also look at L<perlfaq9>.
3446
3447=item setegid() not implemented
3448
3449(F) You tried to assign to C<$)>, and your operating system doesn't
3450support the setegid() system call (or equivalent), or at least Configure
3451didn't think so.
3452
3453=item seteuid() not implemented
3454
3455(F) You tried to assign to C<< $> >>, and your operating system doesn't
3456support the seteuid() system call (or equivalent), or at least Configure
3457didn't think so.
3458
3459=item setpgrp can't take arguments
3460
3461(F) Your system has the setpgrp() from BSD 4.2, which takes no
3462arguments, unlike POSIX setpgid(), which takes a process ID and process
3463group ID.
3464
3465=item setrgid() not implemented
3466
3467(F) You tried to assign to C<$(>, and your operating system doesn't
3468support the setrgid() system call (or equivalent), or at least Configure
3469didn't think so.
3470
3471=item setruid() not implemented
3472
3473(F) You tried to assign to C<$<>, and your operating system doesn't
3474support the setruid() system call (or equivalent), or at least Configure
3475didn't think so.
3476
3477=item setsockopt() on closed socket %s
3478
3479(W closed) You tried to set a socket option on a closed socket. Did you
3480forget to check the return value of your socket() call? See
3481L<perlfunc/setsockopt>.
3482
3483=item Setuid/gid script is writable by world
3484
3485(F) The setuid emulator won't run a script that is writable by the
3486world, because the world might have written on it already.
3487
3488=item Setuid script not plain file
3489
3490(F) The setuid emulator won't run a script that isn't read from a file,
3491but from a socket, a pipe or another device.
3492
3493=item shm%s not implemented
3494
3495(F) You don't have System V shared memory IPC on your system.
3496
3497=item <> should be quotes
3498
3499(F) You wrote C<< require <file> >> when you should have written
3500C<require 'file'>.
3501
3502=item /%s/ should probably be written as "%s"
3503
3504(W syntax) You have used a pattern where Perl expected to find a string,
3505as in the first argument to C<join>. Perl will treat the true or false
3506result of matching the pattern against $_ as the string, which is
3507probably not what you had in mind.
3508
3509=item shutdown() on closed socket %s
3510
3511(W closed) You tried to do a shutdown on a closed socket. Seems a bit
3512superfluous.
3513
3514=item SIG%s handler "%s" not defined
3515
3516(W signal) The signal handler named in %SIG doesn't, in fact, exist.
3517Perhaps you put it into the wrong package?
3518
3519=item sort is now a reserved word
3520
3521(F) An ancient error message that almost nobody ever runs into anymore.
3522But before sort was a keyword, people sometimes used it as a filehandle.
3523
3524=item Sort subroutine didn't return a numeric value
3525
3526(F) A sort comparison routine must return a number. You probably blew
3527it by not using C<< <=> >> or C<cmp>, or by not using them correctly.
3528See L<perlfunc/sort>.
3529
3530=item Sort subroutine didn't return single value
3531
3532(F) A sort comparison subroutine may not return a list value with more
3533or less than one element. See L<perlfunc/sort>.
3534
3535=item splice() offset past end of array
3536
3537(W misc) You attempted to specify an offset that was past the end of
3538the array passed to splice(). Splicing will instead commence at the end
3539of the array, rather than past it. If this isn't what you want, try
3540explicitly pre-extending the array by assigning $#array = $offset. See
3541L<perlfunc/splice>.
3542
3543=item Split loop
3544
3545(P) The split was looping infinitely. (Obviously, a split shouldn't
3546iterate more times than there are characters of input, which is what
3547happened.) See L<perlfunc/split>.
3548
3549=item Statement unlikely to be reached
3550
3551(W exec) You did an exec() with some statement after it other than a
3552die(). This is almost always an error, because exec() never returns
3553unless there was a failure. You probably wanted to use system()
3554instead, which does return. To suppress this warning, put the exec() in
3555a block by itself.
3556
3557=item stat() on unopened filehandle %s
3558
3559(W unopened) You tried to use the stat() function on a filehandle that
3560was either never opened or has since been closed.
3561
3562=item Stub found while resolving method "%s" overloading "%s"
3563
3564(P) Overloading resolution over @ISA tree may be broken by importation
3565stubs. Stubs should never be implicitly created, but explicit calls to
3566C<can> may break this.
3567
3568=item Subroutine %s redefined
3569
3570(W redefine) You redefined a subroutine. To suppress this warning, say
3571
3572 {
3573 no warnings 'redefine';
3574 eval "sub name { ... }";
3575 }
3576
3577=item Substitution loop
3578
3579(P) The substitution was looping infinitely. (Obviously, a substitution
3580shouldn't iterate more times than there are characters of input, which
3581is what happened.) See the discussion of substitution in
3582L<perlop/"Quote and Quote-like Operators">.
3583
3584=item Substitution pattern not terminated
3585
3586(F) The lexer couldn't find the interior delimiter of an s/// or s{}{}
3587construct. Remember that bracketing delimiters count nesting level.
3588Missing the leading C<$> from variable C<$s> may cause this error.
3589
3590=item Substitution replacement not terminated
3591
3592(F) The lexer couldn't find the final delimiter of an s/// or s{}{}
3593construct. Remember that bracketing delimiters count nesting level.
3594Missing the leading C<$> from variable C<$s> may cause this error.
3595
3596=item substr outside of string
3597
3598(W substr),(F) You tried to reference a substr() that pointed outside of
3599a string. That is, the absolute value of the offset was larger than the
3600length of the string. See L<perlfunc/substr>. This warning is fatal if
3601substr is used in an lvalue context (as the left hand side of an
3602assignment or as a subroutine argument for example).
3603
3604=item suidperl is no longer needed since %s
3605
3606(F) Your Perl was compiled with B<-D>SETUID_SCRIPTS_ARE_SECURE_NOW, but
3607a version of the setuid emulator somehow got run anyway.
3608
3609=item Switch (?(condition)... contains too many branches in regex; marked by <-- HERE in m/%s/
3610
3611(F) A (?(condition)if-clause|else-clause) construct can have at most two
3612branches (the if-clause and the else-clause). If you want one or both to
3613contain alternation, such as using C<this|that|other>, enclose it in
3614clustering parentheses:
3615
3616 (?(condition)(?:this|that|other)|else-clause)
3617
3618The <-- HERE shows in the regular expression about where the problem was
3619discovered. See L<perlre>.
3620
3621=item Switch condition not recognized in regex; marked by <-- HERE in m/%s/
3622
3623(F) If the argument to the (?(...)if-clause|else-clause) construct is a
3624number, it can be only a number. The <-- HERE shows in the regular expression
3625about where the problem was discovered. See L<perlre>.
3626
3627=item switching effective %s is not implemented
3628
3629(F) While under the C<use filetest> pragma, we cannot switch the real
3630and effective uids or gids.
3631
3632=item %s syntax
3633
3634(F) The final summary message when a C<perl -c> succeeds.
3635
3636=item syntax error
3637
3638(F) Probably means you had a syntax error. Common reasons include:
3639
3640 A keyword is misspelled.
3641 A semicolon is missing.
3642 A comma is missing.
3643 An opening or closing parenthesis is missing.
3644 An opening or closing brace is missing.
3645 A closing quote is missing.
3646
3647Often there will be another error message associated with the syntax
3648error giving more information. (Sometimes it helps to turn on B<-w>.)
3649The error message itself often tells you where it was in the line when
3650it decided to give up. Sometimes the actual error is several tokens
3651before this, because Perl is good at understanding random input.
3652Occasionally the line number may be misleading, and once in a blue moon
3653the only way to figure out what's triggering the error is to call
3654C<perl -c> repeatedly, chopping away half the program each time to see
3655if the error went away. Sort of the cybernetic version of S<20
3656questions>.
3657
3658=item syntax error at line %d: `%s' unexpected
3659
3660(A) You've accidentally run your script through the Bourne shell instead
3661of Perl. Check the #! line, or manually feed your script into Perl
3662yourself.
3663
3664=item syntax error in file %s at line %d, next 2 tokens "%s"
3665
3666(F) This error is likely to occur if you run a perl5 script through
3667a perl4 interpreter, especially if the next 2 tokens are "use strict"
3668or "my $var" or "our $var".
3669
3670=item sysread() on closed filehandle %s
3671
3672(W closed) You tried to read from a closed filehandle.
3673
3674=item sysread() on unopened filehandle %s
3675
3676(W unopened) You tried to read from a filehandle that was never opened.
3677
3678=item System V %s is not implemented on this machine
3679
3680(F) You tried to do something with a function beginning with "sem",
3681"shm", or "msg" but that System V IPC is not implemented in your
3682machine. In some machines the functionality can exist but be
3683unconfigured. Consult your system support.
3684
3685=item syswrite() on closed filehandle %s
3686
3687(W closed) The filehandle you're writing to got itself closed sometime
3688before now. Check your control flow.
3689
3690=item C<-T> and C<-B> not implemented on filehandles
3691
3692(F) Perl can't peek at the stdio buffer of filehandles when it doesn't
3693know about your kind of stdio. You'll have to use a filename instead.
3694
3695=item Target of goto is too deeply nested
3696
3697(F) You tried to use C<goto> to reach a label that was too deeply nested
3698for Perl to reach. Perl is doing you a favor by refusing.
3699
3700=item tell() on unopened filehandle
3701
3702(W unopened) You tried to use the tell() function on a filehandle that
3703was either never opened or has since been closed.
3704
3705=item That use of $[ is unsupported
3706
3707(F) Assignment to C<$[> is now strictly circumscribed, and interpreted
3708as a compiler directive. You may say only one of
3709
3710 $[ = 0;
3711 $[ = 1;
3712 ...
3713 local $[ = 0;
3714 local $[ = 1;
3715 ...
3716
3717This is to prevent the problem of one module changing the array base out
3718from under another module inadvertently. See L<perlvar/$[>.
3719
3720=item The crypt() function is unimplemented due to excessive paranoia
3721
3722(F) Configure couldn't find the crypt() function on your machine,
3723probably because your vendor didn't supply it, probably because they
3724think the U.S. Government thinks it's a secret, or at least that they
3725will continue to pretend that it is. And if you quote me on that, I
3726will deny it.
3727
3728=item The %s function is unimplemented
3729
3730The function indicated isn't implemented on this architecture, according
3731to the probings of Configure.
3732
3733=item The stat preceding %s wasn't an lstat
3734
3735(F) It makes no sense to test the current stat buffer for symbolic
3736linkhood if the last stat that wrote to the stat buffer already went
3737past the symlink to get to the real file. Use an actual filename
3738instead.
3739
3740=item The 'unique' attribute may only be applied to 'our' variables
3741
3742(F) Currently this attribute is not supported on C<my> or C<sub>
3743declarations. See L<perlfunc/our>.
3744
3745=item This Perl can't reset CRTL environ elements (%s)
3746
3747=item This Perl can't set CRTL environ elements (%s=%s)
3748
3749(W internal) Warnings peculiar to VMS. You tried to change or delete an
3750element of the CRTL's internal environ array, but your copy of Perl
3751wasn't built with a CRTL that contained the setenv() function. You'll
3752need to rebuild Perl with a CRTL that does, or redefine
3753F<PERL_ENV_TABLES> (see L<perlvms>) so that the environ array isn't the
3754target of the change to
3755%ENV which produced the warning.
3756
3757=item thread failed to start: %s
3758
3759(W threads)(S) The entry point function of threads->create() failed for some reason.
3760
3761=item 5.005 threads are deprecated
3762
3763(D deprecated) The 5.005-style threads (activated by C<use Thread;>)
3764are deprecated and one should use the new ithreads instead,
3765see L<perl58delta> for more details.
3766
3767=item times not implemented
3768
3769(F) Your version of the C library apparently doesn't do times(). I
3770suspect you're not running on Unix.
3771
3772=item "-T" is on the #! line, it must also be used on the command line
3773
3774(X) The #! line (or local equivalent) in a Perl script contains the
3775B<-T> option, but Perl was not invoked with B<-T> in its command line.
3776This is an error because, by the time Perl discovers a B<-T> in a
3777script, it's too late to properly taint everything from the environment.
3778So Perl gives up.
3779
3780If the Perl script is being executed as a command using the #!
3781mechanism (or its local equivalent), this error can usually be fixed by
3782editing the #! line so that the B<-T> option is a part of Perl's first
3783argument: e.g. change C<perl -n -T> to C<perl -T -n>.
3784
3785If the Perl script is being executed as C<perl scriptname>, then the
3786B<-T> option must appear on the command line: C<perl -T scriptname>.
3787
3788=item To%s: illegal mapping '%s'
3789
3790(F) You tried to define a customized To-mapping for lc(), lcfirst,
3791uc(), or ucfirst() (or their string-inlined versions), but you
3792specified an illegal mapping.
3793See L<perlunicode/"User-Defined Character Properties">.
3794
3795=item Too deeply nested ()-groups
3796
3797(F) Your template contains ()-groups with a ridiculously deep nesting level.
3798
3799=item Too few args to syscall
3800
3801(F) There has to be at least one argument to syscall() to specify the
3802system call to call, silly dilly.
3803
3804=item Too late for "-%s" option
3805
3806(X) The #! line (or local equivalent) in a Perl script contains the
3807B<-M> or B<-m> option. This is an error because B<-M> and B<-m> options
3808are not intended for use inside scripts. Use the C<use> pragma instead.
3809
3810=item Too late to run %s block
3811
3812(W void) A CHECK or INIT block is being defined during run time proper,
3813when the opportunity to run them has already passed. Perhaps you are
3814loading a file with C<require> or C<do> when you should be using C<use>
3815instead. Or perhaps you should put the C<require> or C<do> inside a
3816BEGIN block.
3817
3818=item Too many args to syscall
3819
3820(F) Perl supports a maximum of only 14 args to syscall().
3821
3822=item Too many arguments for %s
3823
3824(F) The function requires fewer arguments than you specified.
3825
3826=item Too many )'s
3827
3828(A) You've accidentally run your script through B<csh> instead of Perl.
3829Check the #! line, or manually feed your script into Perl yourself.
3830
3831=item Too many ('s
3832
3833(A) You've accidentally run your script through B<csh> instead of Perl.
3834Check the #! line, or manually feed your script into Perl yourself.
3835
3836=item Trailing \ in regex m/%s/
3837
3838(F) The regular expression ends with an unbackslashed backslash.
3839Backslash it. See L<perlre>.
3840
3841=item Transliteration pattern not terminated
3842
3843(F) The lexer couldn't find the interior delimiter of a tr/// or tr[][]
3844or y/// or y[][] construct. Missing the leading C<$> from variables
3845C<$tr> or C<$y> may cause this error.
3846
3847=item Transliteration replacement not terminated
3848
3849(F) The lexer couldn't find the final delimiter of a tr///, tr[][],
3850y/// or y[][] construct.
3851
3852=item '%s' trapped by operation mask
3853
3854(F) You tried to use an operator from a Safe compartment in which it's
3855disallowed. See L<Safe>.
3856
3857=item truncate not implemented
3858
3859(F) Your machine doesn't implement a file truncation mechanism that
3860Configure knows about.
3861
3862=item Type of arg %d to %s must be %s (not %s)
3863
3864(F) This function requires the argument in that position to be of a
3865certain type. Arrays must be @NAME or C<@{EXPR}>. Hashes must be
3866%NAME or C<%{EXPR}>. No implicit dereferencing is allowed--use the
3867{EXPR} forms as an explicit dereference. See L<perlref>.
3868
3869=item umask not implemented
3870
3871(F) Your machine doesn't implement the umask function and you tried to
3872use it to restrict permissions for yourself (EXPR & 0700).
3873
3874=item Unable to create sub named "%s"
3875
3876(F) You attempted to create or access a subroutine with an illegal name.
3877
3878=item Unbalanced context: %d more PUSHes than POPs
3879
3880(W internal) The exit code detected an internal inconsistency in how
3881many execution contexts were entered and left.
3882
3883=item Unbalanced saves: %d more saves than restores
3884
3885(W internal) The exit code detected an internal inconsistency in how
3886many values were temporarily localized.
3887
3888=item Unbalanced scopes: %d more ENTERs than LEAVEs
3889
3890(W internal) The exit code detected an internal inconsistency in how
3891many blocks were entered and left.
3892
3893=item Unbalanced tmps: %d more allocs than frees
3894
3895(W internal) The exit code detected an internal inconsistency in how
3896many mortal scalars were allocated and freed.
3897
3898=item Undefined format "%s" called
3899
3900(F) The format indicated doesn't seem to exist. Perhaps it's really in
3901another package? See L<perlform>.
3902
3903=item Undefined sort subroutine "%s" called
3904
3905(F) The sort comparison routine specified doesn't seem to exist.
3906Perhaps it's in a different package? See L<perlfunc/sort>.
3907
3908=item Undefined subroutine &%s called
3909
3910(F) The subroutine indicated hasn't been defined, or if it was, it has
3911since been undefined.
3912
3913=item Undefined subroutine called
3914
3915(F) The anonymous subroutine you're trying to call hasn't been defined,
3916or if it was, it has since been undefined.
3917
3918=item Undefined subroutine in sort
3919
3920(F) The sort comparison routine specified is declared but doesn't seem
3921to have been defined yet. See L<perlfunc/sort>.
3922
3923=item Undefined top format "%s" called
3924
3925(F) The format indicated doesn't seem to exist. Perhaps it's really in
3926another package? See L<perlform>.
3927
3928=item Undefined value assigned to typeglob
3929
3930(W misc) An undefined value was assigned to a typeglob, a la
3931C<*foo = undef>. This does nothing. It's possible that you really mean
3932C<undef *foo>.
3933
3934=item %s: Undefined variable
3935
3936(A) You've accidentally run your script through B<csh> instead of Perl.
3937Check the #! line, or manually feed your script into Perl yourself.
3938
3939=item unexec of %s into %s failed!
3940
3941(F) The unexec() routine failed for some reason. See your local FSF
3942representative, who probably put it there in the first place.
3943
3944=item Unicode character %s is illegal
3945
3946(W utf8) Certain Unicode characters have been designated off-limits by
3947the Unicode standard and should not be generated. If you really know
3948what you are doing you can turn off this warning by C<no warnings 'utf8';>.
3949
3950=item Unknown BYTEORDER
3951
3952(F) There are no byte-swapping functions for a machine with this byte
3953order.
3954
3955=item Unknown open() mode '%s'
3956
3957(F) The second argument of 3-argument open() is not among the list
3958of valid modes: C<< < >>, C<< > >>, C<<< >> >>>, C<< +< >>,
3959C<< +> >>, C<<< +>> >>>, C<-|>, C<|->, C<< <& >>, C<< >& >>.
3960
3961=item Unknown PerlIO layer "%s"
3962
3963(W layer) An attempt was made to push an unknown layer onto the Perl I/O
3964system. (Layers take care of transforming data between external and
3965internal representations.) Note that some layers, such as C<mmap>,
3966are not supported in all environments. If your program didn't
3967explicitly request the failing operation, it may be the result of the
3968value of the environment variable PERLIO.
3969
3970=item Unknown process %x sent message to prime_env_iter: %s
3971
3972(P) An error peculiar to VMS. Perl was reading values for %ENV before
3973iterating over it, and someone else stuck a message in the stream of
3974data Perl expected. Someone's very confused, or perhaps trying to
3975subvert Perl's population of %ENV for nefarious purposes.
3976
3977=item Unknown "re" subpragma '%s' (known ones are: %s)
3978
3979You tried to use an unknown subpragma of the "re" pragma.
3980
3981=item Unknown switch condition (?(%.2s in regex; marked by <-- HERE in m/%s/
3982
3983(F) The condition part of a (?(condition)if-clause|else-clause) construct
3984is not known. The condition may be lookahead or lookbehind (the condition
3985is true if the lookahead or lookbehind is true), a (?{...}) construct (the
3986condition is true if the code evaluates to a true value), or a number (the
3987condition is true if the set of capturing parentheses named by the number
3988matched).
3989
3990The <-- HERE shows in the regular expression about where the problem was
3991discovered. See L<perlre>.
3992
3993=item Unknown Unicode option letter '%c'
3994
3995You specified an unknown Unicode option. See L<perlrun> documentation
3996of the C<-C> switch for the list of known options.
3997
3998=item Unknown Unicode option value %x
3999
4000You specified an unknown Unicode option. See L<perlrun> documentation
4001of the C<-C> switch for the list of known options.
4002
4003=item Unknown warnings category '%s'
4004
4005(F) An error issued by the C<warnings> pragma. You specified a warnings
4006category that is unknown to perl at this point.
4007
4008Note that if you want to enable a warnings category registered by a module
4009(e.g. C<use warnings 'File::Find'>), you must have imported this module
4010first.
4011
4012=item unmatched [ in regex; marked by <-- HERE in m/%s/
4013
4014(F) The brackets around a character class must match. If you wish to
4015include a closing bracket in a character class, backslash it or put it
4016first. The <-- HERE shows in the regular expression about where the problem
4017was discovered. See L<perlre>.
4018
4019=item unmatched ( in regex; marked by <-- HERE in m/%s/
4020
4021(F) Unbackslashed parentheses must always be balanced in regular
4022expressions. If you're a vi user, the % key is valuable for finding the
4023matching parenthesis. The <-- HERE shows in the regular expression about
4024where the problem was discovered. See L<perlre>.
4025
4026=item Unmatched right %s bracket
4027
4028(F) The lexer counted more closing curly or square brackets than opening
4029ones, so you're probably missing a matching opening bracket. As a
4030general rule, you'll find the missing one (so to speak) near the place
4031you were last editing.
4032
4033=item Unquoted string "%s" may clash with future reserved word
4034
4035(W reserved) You used a bareword that might someday be claimed as a
4036reserved word. It's best to put such a word in quotes, or capitalize it
4037somehow, or insert an underbar into it. You might also declare it as a
4038subroutine.
4039
4040=item Unrecognized character %s
4041
4042(F) The Perl parser has no idea what to do with the specified character
4043in your Perl script (or eval). Perhaps you tried to run a compressed
4044script, a binary program, or a directory as a Perl program.
4045
4046=item /%s/: Unrecognized escape \\%c in character class passed through
4047
4048(W regexp) You used a backslash-character combination which is not
4049recognized by Perl inside character classes. The character was
4050understood literally.
4051
4052=item Unrecognized escape \\%c passed through
4053
4054(W misc) You used a backslash-character combination which is not
4055recognized by Perl.
4056
4057=item Unrecognized escape \\%c passed through in regex; marked by <-- HERE in m/%s/
4058
4059(W regexp) You used a backslash-character combination which is not
4060recognized by Perl. This combination appears in an interpolated variable or
4061a C<'>-delimited regular expression. The character was understood
4062literally. The <-- HERE shows in the regular expression about where the
4063escape was discovered.
4064
4065=item Unrecognized signal name "%s"
4066
4067(F) You specified a signal name to the kill() function that was not
4068recognized. Say C<kill -l> in your shell to see the valid signal names
4069on your system.
4070
4071=item Unrecognized switch: -%s (-h will show valid options)
4072
4073(F) You specified an illegal option to Perl. Don't do that. (If you
4074think you didn't do that, check the #! line to see if it's supplying the
4075bad switch on your behalf.)
4076
4077=item Unsuccessful %s on filename containing newline
4078
4079(W newline) A file operation was attempted on a filename, and that
4080operation failed, PROBABLY because the filename contained a newline,
4081PROBABLY because you forgot to chomp() it off. See L<perlfunc/chomp>.
4082
4083=item Unsupported directory function "%s" called
4084
4085(F) Your machine doesn't support opendir() and readdir().
4086
4087=item Unsupported function %s
4088
4089(F) This machine doesn't implement the indicated function, apparently.
4090At least, Configure doesn't think so.
4091
4092=item Unsupported function fork
4093
4094(F) Your version of executable does not support forking.
4095
4096Note that under some systems, like OS/2, there may be different flavors
4097of Perl executables, some of which may support fork, some not. Try
4098changing the name you call Perl by to C<perl_>, C<perl__>, and so on.
4099
4100=item Unsupported script encoding %s
4101
4102(F) Your program file begins with a Unicode Byte Order Mark (BOM) which
4103declares it to be in a Unicode encoding that Perl cannot read.
4104
4105=item Unsupported socket function "%s" called
4106
4107(F) Your machine doesn't support the Berkeley socket mechanism, or at
4108least that's what Configure thought.
4109
4110=item Unterminated attribute list
4111
4112(F) The lexer found something other than a simple identifier at the
4113start of an attribute, and it wasn't a semicolon or the start of a
4114block. Perhaps you terminated the parameter list of the previous
4115attribute too soon. See L<attributes>.
4116
4117=item Unterminated attribute parameter in attribute list
4118
4119(F) The lexer saw an opening (left) parenthesis character while parsing
4120an attribute list, but the matching closing (right) parenthesis
4121character was not found. You may need to add (or remove) a backslash
4122character to get your parentheses to balance. See L<attributes>.
4123
4124=item Unterminated compressed integer
4125
4126(F) An argument to unpack("w",...) was incompatible with the BER
4127compressed integer format and could not be converted to an integer.
4128See L<perlfunc/pack>.
4129
4130=item Unterminated <> operator
4131
4132(F) The lexer saw a left angle bracket in a place where it was expecting
4133a term, so it's looking for the corresponding right angle bracket, and
4134not finding it. Chances are you left some needed parentheses out
4135earlier in the line, and you really meant a "less than".
4136
4137=item untie attempted while %d inner references still exist
4138
4139(W untie) A copy of the object returned from C<tie> (or C<tied>) was
4140still valid when C<untie> was called.
4141
4142=item Usage: POSIX::%s(%s)
4143
4144(F) You called a POSIX function with incorrect arguments.
4145See L<POSIX/FUNCTIONS> for more information.
4146
4147=item Usage: Win32::%s(%s)
4148
4149(F) You called a Win32 function with incorrect arguments.
4150See L<Win32> for more information.
4151
4152=item Useless (?-%s) - don't use /%s modifier in regex; marked by <-- HERE in m/%s/
4153
4154(W regexp) You have used an internal modifier such as (?-o) that has no
4155meaning unless removed from the entire regexp:
4156
4157 if ($string =~ /(?-o)$pattern/o) { ... }
4158
4159must be written as
4160
4161 if ($string =~ /$pattern/) { ... }
4162
4163The <-- HERE shows in the regular expression about
4164where the problem was discovered. See L<perlre>.
4165
4166=item Useless (?%s) - use /%s modifier in regex; marked by <-- HERE in m/%s/
4167
4168(W regexp) You have used an internal modifier such as (?o) that has no
4169meaning unless applied to the entire regexp:
4170
4171 if ($string =~ /(?o)$pattern/) { ... }
4172
4173must be written as
4174
4175 if ($string =~ /$pattern/o) { ... }
4176
4177The <-- HERE shows in the regular expression about
4178where the problem was discovered. See L<perlre>.
4179
4180=item Useless use of %s in void context
4181
4182(W void) You did something without a side effect in a context that does
4183nothing with the return value, such as a statement that doesn't return a
4184value from a block, or the left side of a scalar comma operator. Very
4185often this points not to stupidity on your part, but a failure of Perl
4186to parse your program the way you thought it would. For example, you'd
4187get this if you mixed up your C precedence with Python precedence and
4188said
4189
4190 $one, $two = 1, 2;
4191
4192when you meant to say
4193
4194 ($one, $two) = (1, 2);
4195
4196Another common error is to use ordinary parentheses to construct a list
4197reference when you should be using square or curly brackets, for
4198example, if you say
4199
4200 $array = (1,2);
4201
4202when you should have said
4203
4204 $array = [1,2];
4205
4206The square brackets explicitly turn a list value into a scalar value,
4207while parentheses do not. So when a parenthesized list is evaluated in
4208a scalar context, the comma is treated like C's comma operator, which
4209throws away the left argument, which is not what you want. See
4210L<perlref> for more on this.
4211
4212This warning will not be issued for numerical constants equal to 0 or 1
4213since they are often used in statements like
4214
4215 1 while sub_with_side_effects();
4216
4217String constants that would normally evaluate to 0 or 1 are warned
4218about.
4219
4220=item Useless use of "re" pragma
4221
4222(W) You did C<use re;> without any arguments. That isn't very useful.
4223
4224=item Useless use of sort in scalar context
4225
4226(W void) You used sort in scalar context, as in :
4227
4228 my $x = sort @y;
4229
4230This is not very useful, and perl currently optimizes this away.
4231
4232=item Useless use of %s with no values
4233
4234(W syntax) You used the push() or unshift() function with no arguments
4235apart from the array, like C<push(@x)> or C<unshift(@foo)>. That won't
4236usually have any effect on the array, so is completely useless. It's
4237possible in principle that push(@tied_array) could have some effect
4238if the array is tied to a class which implements a PUSH method. If so,
4239you can write it as C<push(@tied_array,())> to avoid this warning.
4240
4241=item "use" not allowed in expression
4242
4243(F) The "use" keyword is recognized and executed at compile time, and
4244returns no useful value. See L<perlmod>.
4245
4246=item Use of bare << to mean <<"" is deprecated
4247
4248(D deprecated) You are now encouraged to use the explicitly quoted form
4249if you wish to use an empty line as the terminator of the here-document.
4250
4251=item Use of chdir('') or chdir(undef) as chdir() deprecated
4252
4253(D deprecated) chdir() with no arguments is documented to change to
4254$ENV{HOME} or $ENV{LOGDIR}. chdir(undef) and chdir('') share this
4255behavior, but that has been deprecated. In future versions they
4256will simply fail.
4257
4258Be careful to check that what you pass to chdir() is defined and not
4259blank, else you might find yourself in your home directory.
4260
4261=item Use of /c modifier is meaningless in s///
4262
4263(W regexp) You used the /c modifier in a substitution. The /c
4264modifier is not presently meaningful in substitutions.
4265
4266=item Use of /c modifier is meaningless without /g
4267
4268(W regexp) You used the /c modifier with a regex operand, but didn't
4269use the /g modifier. Currently, /c is meaningful only when /g is
4270used. (This may change in the future.)
4271
4272=item Use of freed value in iteration
4273
4274(F) Perhaps you modified the iterated array within the loop?
4275This error is typically caused by code like the following:
4276
4277 @a = (3,4);
4278 @a = () for (1,2,@a);
4279
4280You are not supposed to modify arrays while they are being iterated over.
4281For speed and efficiency reasons, Perl internally does not do full
4282reference-counting of iterated items, hence deleting such an item in the
4283middle of an iteration causes Perl to see a freed value.
4284
4285=item Use of *glob{FILEHANDLE} is deprecated
4286
4287(D deprecated) You are now encouraged to use the shorter *glob{IO} form
4288to access the filehandle slot within a typeglob.
4289
4290=item Use of /g modifier is meaningless in split
4291
4292(W regexp) You used the /g modifier on the pattern for a C<split>
4293operator. Since C<split> always tries to match the pattern
4294repeatedly, the C</g> has no effect.
4295
4296=item Use of implicit split to @_ is deprecated
4297
4298(D deprecated) It makes a lot of work for the compiler when you clobber
4299a subroutine's argument list, so it's better if you assign the results
4300of a split() explicitly to an array (or list).
4301
4302=item Use of inherited AUTOLOAD for non-method %s() is deprecated
4303
4304(D deprecated) As an (ahem) accidental feature, C<AUTOLOAD> subroutines
4305are looked up as methods (using the C<@ISA> hierarchy) even when the
4306subroutines to be autoloaded were called as plain functions (e.g.
4307C<Foo::bar()>), not as methods (e.g. C<< Foo->bar() >> or C<<
4308$obj->bar() >>).
4309
4310This bug will be rectified in future by using method lookup only for
4311methods' C<AUTOLOAD>s. However, there is a significant base of existing
4312code that may be using the old behavior. So, as an interim step, Perl
4313currently issues an optional warning when non-methods use inherited
4314C<AUTOLOAD>s.
4315
4316The simple rule is: Inheritance will not work when autoloading
4317non-methods. The simple fix for old code is: In any module that used
4318to depend on inheriting C<AUTOLOAD> for non-methods from a base class
4319named C<BaseClass>, execute C<*AUTOLOAD = \&BaseClass::AUTOLOAD> during
4320startup.
4321
4322In code that currently says C<use AutoLoader; @ISA = qw(AutoLoader);>
4323you should remove AutoLoader from @ISA and change C<use AutoLoader;> to
4324C<use AutoLoader 'AUTOLOAD';>.
4325
4326=item Use of %s in printf format not supported
4327
4328(F) You attempted to use a feature of printf that is accessible from
4329only C. This usually means there's a better way to do it in Perl.
4330
4331=item Use of $* is deprecated
4332
4333(D deprecated) This variable magically turned on multi-line pattern
4334matching, both for you and for any luckless subroutine that you happen
4335to call. You should use the new C<//m> and C<//s> modifiers now to do
4336that without the dangerous action-at-a-distance effects of C<$*>.
4337
4338=item Use of $# is deprecated
4339
4340(D deprecated) This was an ill-advised attempt to emulate a poorly
4341defined B<awk> feature. Use an explicit printf() or sprintf() instead.
4342
4343=item Use of %s is deprecated
4344
4345(D deprecated) The construct indicated is no longer recommended for use,
4346generally because there's a better way to do it, and also because the
4347old way has bad side effects.
4348
4349=item Use of -l on filehandle %s
4350
4351(W io) A filehandle represents an opened file, and when you opened the file
4352it already went past any symlink you are presumably trying to look for.
4353The operation returned C<undef>. Use a filename instead.
4354
4355=item Use of "package" with no arguments is deprecated
4356
4357(D deprecated) You used the C<package> keyword without specifying a package
4358name. So no namespace is current at all. Using this can cause many
4359otherwise reasonable constructs to fail in baffling ways. C<use strict;>
4360instead.
4361
4362=item Use of reference "%s" as array index
4363
4364(W misc) You tried to use a reference as an array index; this probably
4365isn't what you mean, because references in numerical context tend
4366to be huge numbers, and so usually indicates programmer error.
4367
4368If you really do mean it, explicitly numify your reference, like so:
4369C<$array[0+$ref]>. This warning is not given for overloaded objects,
4370either, because you can overload the numification and stringification
4371operators and then you assumedly know what you are doing.
4372
4373=item Use of reserved word "%s" is deprecated
4374
4375(D deprecated) The indicated bareword is a reserved word. Future
4376versions of perl may use it as a keyword, so you're better off either
4377explicitly quoting the word in a manner appropriate for its context of
4378use, or using a different name altogether. The warning can be
4379suppressed for subroutine names by either adding a C<&> prefix, or using
4380a package qualifier, e.g. C<&our()>, or C<Foo::our()>.
4381
4382=item Use of tainted arguments in %s is deprecated
4383
4384(W taint, deprecated) You have supplied C<system()> or C<exec()> with multiple
4385arguments and at least one of them is tainted. This used to be allowed
4386but will become a fatal error in a future version of perl. Untaint your
4387arguments. See L<perlsec>.
4388
4389=item Use of uninitialized value%s
4390
4391(W uninitialized) An undefined value was used as if it were already
4392defined. It was interpreted as a "" or a 0, but maybe it was a mistake.
4393To suppress this warning assign a defined value to your variables.
4394
4395To help you figure out what was undefined, perl tells you what operation
4396you used the undefined value in. Note, however, that perl optimizes your
4397program and the operation displayed in the warning may not necessarily
4398appear literally in your program. For example, C<"that $foo"> is
4399usually optimized into C<"that " . $foo>, and the warning will refer to
4400the C<concatenation (.)> operator, even though there is no C<.> in your
4401program.
4402
4403=item Using a hash as a reference is deprecated
4404
4405(D deprecated) You tried to use a hash as a reference, as in
4406C<< %foo->{"bar"} >> or C<< %$ref->{"hello"} >>. Versions of perl <= 5.6.1
4407used to allow this syntax, but shouldn't have. It is now deprecated, and will
4408be removed in a future version.
4409
4410=item Using an array as a reference is deprecated
4411
4412(D deprecated) You tried to use an array as a reference, as in
4413C<< @foo->[23] >> or C<< @$ref->[99] >>. Versions of perl <= 5.6.1 used to
4414allow this syntax, but shouldn't have. It is now deprecated, and will be
4415removed in a future version.
4416
4417=item UTF-16 surrogate %s
4418
4419(W utf8) You tried to generate half of an UTF-16 surrogate by
4420requesting a Unicode character between the code points 0xD800 and
44210xDFFF (inclusive). That range is reserved exclusively for the use of
4422UTF-16 encoding (by having two 16-bit UCS-2 characters); but Perl
4423encodes its characters in UTF-8, so what you got is a very illegal
4424character. If you really know what you are doing you can turn off
4425this warning by C<no warnings 'utf8';>.
4426
4427=item Value of %s can be "0"; test with defined()
4428
4429(W misc) In a conditional expression, you used <HANDLE>, <*> (glob),
4430C<each()>, or C<readdir()> as a boolean value. Each of these constructs
4431can return a value of "0"; that would make the conditional expression
4432false, which is probably not what you intended. When using these
4433constructs in conditional expressions, test their values with the
4434C<defined> operator.
4435
4436=item Value of CLI symbol "%s" too long
4437
4438(W misc) A warning peculiar to VMS. Perl tried to read the value of an
4439%ENV element from a CLI symbol table, and found a resultant string
4440longer than 1024 characters. The return value has been truncated to
44411024 characters.
4442
4443=item Variable "%s" is not imported%s
4444
4445(F) While "use strict" in effect, you referred to a global variable that
4446you apparently thought was imported from another module, because
4447something else of the same name (usually a subroutine) is exported by
4448that module. It usually means you put the wrong funny character on the
4449front of your variable.
4450
4451=item Variable length lookbehind not implemented in regex; marked by <-- HERE in m/%s/
4452
4453(F) Lookbehind is allowed only for subexpressions whose length is fixed and
4454known at compile time. The <-- HERE shows in the regular expression about
4455where the problem was discovered. See L<perlre>.
4456
4457=item "%s" variable %s masks earlier declaration in same %s
4458
4459(W misc) A "my" or "our" variable has been redeclared in the current
4460scope or statement, effectively eliminating all access to the previous
4461instance. This is almost always a typographical error. Note that the
4462earlier variable will still exist until the end of the scope or until
4463all closure referents to it are destroyed.
4464
4465=item Variable "%s" may be unavailable
4466
4467(W closure) An inner (nested) I<anonymous> subroutine is inside a
4468I<named> subroutine, and outside that is another subroutine; and the
4469anonymous (innermost) subroutine is referencing a lexical variable
4470defined in the outermost subroutine. For example:
4471
4472 sub outermost { my $a; sub middle { sub { $a } } }
4473
4474If the anonymous subroutine is called or referenced (directly or
4475indirectly) from the outermost subroutine, it will share the variable as
4476you would expect. But if the anonymous subroutine is called or
4477referenced when the outermost subroutine is not active, it will see the
4478value of the shared variable as it was before and during the *first*
4479call to the outermost subroutine, which is probably not what you want.
4480
4481In these circumstances, it is usually best to make the middle subroutine
4482anonymous, using the C<sub {}> syntax. Perl has specific support for
4483shared variables in nested anonymous subroutines; a named subroutine in
4484between interferes with this feature.
4485
4486=item Variable syntax
4487
4488(A) You've accidentally run your script through B<csh> instead
4489of Perl. Check the #! line, or manually feed your script into
4490Perl yourself.
4491
4492=item Variable "%s" will not stay shared
4493
4494(W closure) An inner (nested) I<named> subroutine is referencing a
4495lexical variable defined in an outer subroutine.
4496
4497When the inner subroutine is called, it will probably see the value of
4498the outer subroutine's variable as it was before and during the *first*
4499call to the outer subroutine; in this case, after the first call to the
4500outer subroutine is complete, the inner and outer subroutines will no
4501longer share a common value for the variable. In other words, the
4502variable will no longer be shared.
4503
4504Furthermore, if the outer subroutine is anonymous and references a
4505lexical variable outside itself, then the outer and inner subroutines
4506will I<never> share the given variable.
4507
4508This problem can usually be solved by making the inner subroutine
4509anonymous, using the C<sub {}> syntax. When inner anonymous subs that
4510reference variables in outer subroutines are called or referenced, they
4511are automatically rebound to the current values of such variables.
4512
4513=item Version number must be a constant number
4514
4515(P) The attempt to translate a C<use Module n.n LIST> statement into
4516its equivalent C<BEGIN> block found an internal inconsistency with
4517the version number.
4518
4519=item Warning: something's wrong
4520
4521(W) You passed warn() an empty string (the equivalent of C<warn "">) or
4522you called it with no args and C<$_> was empty.
4523
4524=item Warning: unable to close filehandle %s properly
4525
4526(S) The implicit close() done by an open() got an error indication on
4527the close(). This usually indicates your file system ran out of disk
4528space.
4529
4530=item Warning: Use of "%s" without parentheses is ambiguous
4531
4532(S ambiguous) You wrote a unary operator followed by something that
4533looks like a binary operator that could also have been interpreted as a
4534term or unary operator. For instance, if you know that the rand
4535function has a default argument of 1.0, and you write
4536
4537 rand + 5;
4538
4539you may THINK you wrote the same thing as
4540
4541 rand() + 5;
4542
4543but in actual fact, you got
4544
4545 rand(+5);
4546
4547So put in parentheses to say what you really mean.
4548
4549=item Wide character in %s
4550
4551(W utf8) Perl met a wide character (>255) when it wasn't expecting
4552one. This warning is by default on for I/O (like print). The easiest
4553way to quiet this warning is simply to add the C<:utf8> layer to the
4554output, e.g. C<binmode STDOUT, ':utf8'>. Another way to turn off the
4555warning is to add C<no warnings 'utf8';> but that is often closer to
4556cheating. In general, you are supposed to explicitly mark the
4557filehandle with an encoding, see L<open> and L<perlfunc/binmode>.
4558
4559=item Within []-length '%c' not allowed
4560
4561(F) The count in the (un)pack template may be replaced by C<[TEMPLATE]> only if
4562C<TEMPLATE> always matches the same amount of packed bytes that can be
4563determined from the template alone. This is not possible if it contains an
4564of the codes @, /, U, u, w or a *-length. Redesign the template.
4565
4566=item write() on closed filehandle %s
4567
4568(W closed) The filehandle you're writing to got itself closed sometime
4569before now. Check your control flow.
4570
4571=item %s "\x%s" does not map to Unicode
4572
4573When reading in different encodings Perl tries to map everything
4574into Unicode characters. The bytes you read in are not legal in
4575this encoding, for example
4576
4577 utf8 "\xE4" does not map to Unicode
4578
4579if you try to read in the a-diaereses Latin-1 as UTF-8.
4580
4581=item 'X' outside of string
4582
4583(F) You had a (un)pack template that specified a relative position before
4584the beginning of the string being (un)packed. See L<perlfunc/pack>.
4585
4586=item 'x' outside of string in unpack
4587
4588(F) You had a pack template that specified a relative position after
4589the end of the string being unpacked. See L<perlfunc/pack>.
4590
4591=item YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!
4592
4593(F) And you probably never will, because you probably don't have the
4594sources to your kernel, and your vendor probably doesn't give a rip
4595about what you want. Your best bet is to put a setuid C wrapper around
4596your script.
4597
4598=item You need to quote "%s"
4599
4600(W syntax) You assigned a bareword as a signal handler name.
4601Unfortunately, you already have a subroutine of that name declared,
4602which means that Perl 5 will try to call the subroutine when the
4603assignment is executed, which is probably not what you want. (If it IS
4604what you want, put an & in front.)
4605
4606=item Your random numbers are not that random
4607
4608(F) When trying to initialise the random seed for hashes, Perl could
4609not get any randomness out of your system. This usually indicates
4610Something Very Wrong.
4611
4612=back
4613
4614=cut
Note: See TracBrowser for help on using the repository browser.