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