This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #39739] TODO test for Exporter respecting warning handlers
[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
466416ed 23below. E.g. C<(W closed)> means a warning in the C<closed> category.
e476b1b5
GS
24
25Optional warnings are enabled by using the C<warnings> pragma or the B<-w>
fa816bf3 26and B<-W> switches. Warnings may be captured by setting C<$SIG{__WARN__}>
e476b1b5
GS
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
de42a5a9 53=item Allocation too large: %x
a0d0e21e 54
6df41af2 55(X) You can't allocate more than 64K on an MS-DOS machine.
a0d0e21e 56
04f74579 57=item '%c' allowed only after types %s in %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
7c7af292 88(S ambiguous) You said something that may not be interpreted the way
6df41af2
GS
89you thought. Normally it's pretty easy to disambiguate it by supplying
90a missing quote, operator, parenthesis pair or declaration.
a0d0e21e 91
d8225693
JM
92=item Ambiguous use of %c resolved as operator %c
93
7c7af292 94(S ambiguous) C<%>, C<&>, and C<*> are both infix operators (modulus,
3303f755
FC
95bitwise and, and multiplication) I<and> initial special characters
96(denoting hashes, subroutines and typeglobs), and you said something
97like C<*foo * foo> that might be interpreted as either of them. We
98assumed you meant the infix operator, but please try to make it more
99clear -- in the example given, you might write C<*foo * foo()> if you
100really meant to multiply a glob by the result of calling a function.
d8225693 101
1ef43bca
JM
102=item Ambiguous use of %c{%s} resolved to %c%s
103
104(W ambiguous) You wrote something like C<@{foo}>, which might be
105asking for the variable C<@foo>, or it might be calling a function
106named foo, and dereferencing it as an array reference. If you wanted
1cecf2c0 107the variable, you can just write C<@foo>. If you wanted to call the
1ef43bca
JM
108function, write C<@{foo()}> ... or you could just not have a variable
109and a function with the same name, and save yourself a lot of trouble.
110
e850844c
FC
111=item Ambiguous use of %c{%s[...]} resolved to %c%s[...]
112
113=item Ambiguous use of %c{%s{...}} resolved to %c%s{...}
4da60377 114
fa816bf3
FC
115(W ambiguous) You wrote something like C<${foo[2]}> (where foo represents
116the name of a Perl keyword), which might be looking for element number
1172 of the array named C<@foo>, in which case please write C<$foo[2]>, or you
118might have meant to pass an anonymous arrayref to the function named
119foo, and then do a scalar deref on the value it returns. If you meant
120that, write C<${foo([2])}>.
ccaaf480
FC
121
122In regular expressions, the C<${foo[2]}> syntax is sometimes necessary
123to disambiguate between array subscripts and character classes.
fa816bf3
FC
124C</$length[2345]/>, for instance, will be interpreted as C<$length> followed
125by the character class C<[2345]>. If an array subscript is what you
126want, you can avoid the warning by changing C</${length[2345]}/> to the
127unsightly C</${\$length[2345]}/>, by renaming your array to something
128that does not coincide with a built-in keyword, or by simply turning
129off warnings with C<no warnings 'ambiguous';>.
4da60377 130
bdac9d71 131=item Ambiguous use of -%s resolved as -&%s()
397d0f13 132
7c7af292 133(S ambiguous) You wrote something like C<-foo>, which might be the
a7f6e211
FC
134string C<"-foo">, or a call to the function C<foo>, negated. If you meant
135the string, just write C<"-foo">. If you meant the function call,
397d0f13
JM
136write C<-foo()>.
137
6df41af2 138=item '|' and '<' may not both be specified on command line
a0d0e21e 139
be771a83
GS
140(F) An error peculiar to VMS. Perl does its own command line
141redirection, and found that STDIN was a pipe, and that you also tried to
142redirect STDIN using '<'. Only one STDIN stream to a customer, please.
c9f97d15 143
6df41af2 144=item '|' and '>' may not both be specified on command line
1028017a 145
be771a83
GS
146(F) An error peculiar to VMS. Perl does its own command line
147redirection, and thinks you tried to redirect stdout both to a file and
148into a pipe to another command. You need to choose one or the other,
149though nothing's stopping you from piping into a program or Perl script
150which 'splits' output into two streams, such as
1028017a 151
6df41af2
GS
152 open(OUT,">$ARGV[0]") or die "Can't write to $ARGV[0]: $!";
153 while (<STDIN>) {
154 print;
155 print OUT;
156 }
157 close OUT;
c9f97d15 158
6df41af2 159=item Applying %s to %s will act on scalar(%s)
eb6e2d6f 160
496a33f5
SC
161(W misc) The pattern match (C<//>), substitution (C<s///>), and
162transliteration (C<tr///>) operators work on scalar values. If you apply
be771a83 163one of them to an array or a hash, it will convert the array or hash to
ac036724 164a scalar value (the length of an array, or the population info of a
165hash) and then work on that scalar value. This is probably not what
be771a83
GS
166you meant to do. See L<perlfunc/grep> and L<perlfunc/map> for
167alternatives.
eb6e2d6f 168
6df41af2 169=item Arg too short for msgsnd
76cd736e 170
6df41af2 171(F) msgsnd() requires a string at least as long as sizeof(long).
76cd736e 172
b0fdf69e 173=item %s argument is not a HASH or ARRAY element or a subroutine
a0d0e21e 174
cc1c2e42
FC
175(F) The argument to exists() must be a hash or array element or a
176subroutine with an ampersand, such as:
a0d0e21e
LW
177
178 $foo{$bar}
cb4f522a 179 $ref->{"susie"}[12]
cc1c2e42 180 &do_something
a0d0e21e 181
8ea97a1e 182=item %s argument is not a HASH or ARRAY element or slice
5f05dabc 183
06e52bfa
FC
184(F) The argument to delete() must be either a hash or array element,
185such as:
5f05dabc 186
187 $foo{$bar}
cb4f522a 188 $ref->{"susie"}[12]
5f05dabc 189
8ea97a1e 190or a hash or array slice, such as:
5f05dabc 191
6df41af2
GS
192 @foo[$bar, $baz, $xyzzy]
193 @{$ref->[12]}{"susie", "queue"}
5315574d 194
6df41af2 195=item %s argument is not a subroutine name
a0d0e21e 196
6df41af2 197(F) The argument to exists() for C<exists &sub> must be a subroutine
be771a83
GS
198name, and not a subroutine call. C<exists &sub()> will generate this
199error.
a0d0e21e 200
f86702cc 201=item Argument "%s" isn't numeric%s
a0d0e21e 202
be771a83
GS
203(W numeric) The indicated string was fed as an argument to an operator
204that expected a numeric value instead. If you're fortunate the message
205will identify which operator was so unfortunate.
a0d0e21e 206
b4581f09
JH
207=item Argument list not closed for PerlIO layer "%s"
208
a534ac11
FC
209(W layer) When pushing a layer with arguments onto the Perl I/O
210system you forgot the ) that closes the argument list. (Layers
211take care of transforming data between external and internal
212representations.) Perl stopped parsing the layer list at this
213point and did not attempt to push this layer. If your program
214didn't explicitly request the failing operation, it may be the
215result of the value of the environment variable PERLIO.
b4581f09 216
a0d0e21e
LW
217=item Array @%s missing the @ in argument %d of %s()
218
75b44862
GS
219(D deprecated) Really old Perl let you omit the @ on array names in some
220spots. This is now heavily deprecated.
a0d0e21e 221
bd299e29
KW
222=item A sequence of multiple spaces in a charnames alias definition is deprecated
223
94ec3a20
FC
224(D deprecated) You defined a character name which had multiple space
225characters in a row. Change them to single spaces. Usually these
226names are defined in the C<:alias> import argument to C<use charnames>, but
227they could be defined by a translator installed into C<$^H{charnames}>.
228See L<charnames/CUSTOM ALIASES>.
bd299e29 229
a0d0e21e
LW
230=item assertion botched: %s
231
21b5e840 232(X) The malloc package that comes with Perl had an internal failure.
a0d0e21e
LW
233
234=item Assertion failed: file "%s"
235
21b5e840 236(X) A general assertion failed. The file in question must be examined.
a0d0e21e 237
82122228
FC
238=item Assigning non-zero to $[ is no longer possible
239
7d345e3d
FC
240(F) When the "array_base" feature is disabled (e.g., under C<use v5.16;>)
241the special variable C<$[>, which is deprecated, is now a fixed zero value.
82122228 242
a0d0e21e
LW
243=item Assignment to both a list and a scalar
244
245(F) If you assign to a conditional operator, the 2nd and 3rd arguments
246must either both be scalars or both be lists. Otherwise Perl won't
247know which context to supply to the right side.
248
96ebfdd7
RK
249=item A thread exited while %d threads were running
250
b92a77e8
FC
251(W threads)(S) When using threaded Perl, a thread (not necessarily
252the main thread) exited while there were still other threads running.
111a855e
FC
253Usually it's a good idea first to collect the return values of the
254created threads by joining them, and only then to exit from the main
96ebfdd7
RK
255thread. See L<threads>.
256
2393f1b9 257=item Attempt to access disallowed key '%s' in a restricted hash
1b1f1335 258
49293501 259(F) The failing code has attempted to get or set a key which is not in
2393f1b9 260the current set of allowed keys of a restricted hash.
49293501 261
dcdfe746
FC
262=item Attempt to bless into a freed package
263
264(F) You wrote C<bless $foo> with one argument after somehow causing
265the current package to be freed. Perl cannot figure out what to
266do, so it throws up in hands in despair.
267
81689caa
HS
268=item Attempt to bless into a reference
269
270(F) The CLASSNAME argument to the bless() operator is expected to be
57dedab9 271the name of the package to bless the resulting object into. You've
81689caa
HS
272supplied instead a reference to something: perhaps you wrote
273
274 bless $self, $proto;
275
276when you intended
277
278 bless $self, ref($proto) || $proto;
279
280If you actually want to bless into the stringified version
281of the reference supplied, you need to stringify it yourself, for
282example by:
283
284 bless $self, "$proto";
285
a730510a
FC
286=item Attempt to clear deleted array
287
288(S debugging) An array was assigned to when it was being freed.
289Freed values are not supposed to be visible to Perl code. This
290can also happen if XS code calls C<av_clear> from a custom magic
291callback on the array.
292
96ebfdd7
RK
293=item Attempt to delete disallowed key '%s' from a restricted hash
294
295(F) The failing code attempted to delete from a restricted hash a key
296which is not in its key set.
297
298=item Attempt to delete readonly key '%s' from a restricted hash
299
300(F) The failing code attempted to delete a key whose value has been
301declared readonly from a restricted hash.
302
de42a5a9 303=item Attempt to free non-arena SV: 0x%x
a0d0e21e 304
f84fe999 305(S internal) All SV objects are supposed to be allocated from arenas
be771a83
GS
306that will be garbage collected on exit. An SV was discovered to be
307outside any of those arenas.
a0d0e21e 308
12578ffb 309=item Attempt to free nonexistent shared string '%s'%s
bbce6d69 310
f84fe999 311(S internal) Perl maintains a reference-counted internal table of
be771a83
GS
312strings to optimize the storage and access of hash keys and other
313strings. This indicates someone tried to decrement the reference count
314of a string that can no longer be found in the table.
bbce6d69 315
7d5b40b4 316=item Attempt to free temp prematurely: SV 0x%x
a0d0e21e 317
f84fe999 318(S debugging) Mortalized values are supposed to be freed by the
be771a83
GS
319free_tmps() routine. This indicates that something else is freeing the
320SV before the free_tmps() routine gets a chance, which means that the
321free_tmps() routine will be freeing an unreferenced scalar when it does
322try to free it.
a0d0e21e
LW
323
324=item Attempt to free unreferenced glob pointers
325
f84fe999 326(S internal) The reference counts got screwed up on symbol aliases.
a0d0e21e 327
7d5b40b4 328=item Attempt to free unreferenced scalar: SV 0x%x
a0d0e21e 329
8f7e4d2c 330(S internal) Perl went to decrement the reference count of a scalar to
be771a83
GS
331see if it would go to 0, and discovered that it had already gone to 0
332earlier, and should have been freed, and in fact, probably was freed.
333This could indicate that SvREFCNT_dec() was called too many times, or
334that SvREFCNT_inc() was called too few times, or that the SV was
335mortalized when it shouldn't have been, or that memory has been
336corrupted.
a0d0e21e 337
dcdda58d
GS
338=item Attempt to join self
339
340(F) You tried to join a thread from within itself, which is an
be771a83
GS
341impossible task. You may be joining the wrong thread, or you may need
342to move the join() to some other thread.
dcdda58d 343
84902520
TB
344=item Attempt to pack pointer to temporary value
345
be771a83
GS
346(W pack) You tried to pass a temporary value (like the result of a
347function, or a computed expression) to the "p" pack() template. This
348means the result contains a pointer to a location that could become
349invalid anytime, even before the end of the current statement. Use
350literals or global values as arguments to the "p" pack() template to
351avoid this warning.
84902520 352
087b5369
RD
353=item Attempt to reload %s aborted.
354
355(F) You tried to load a file with C<use> or C<require> that failed to
356compile once already. Perl will not try to compile this file again
357unless you delete its entry from %INC. See L<perlfunc/require> and
358L<perlvar/%INC>.
359
1b20cd17
NC
360=item Attempt to set length of freed array
361
0c5c527f
FC
362(W misc) You tried to set the length of an array which has
363been freed. You can do this by storing a reference to the
364scalar representing the last index of an array and later
365assigning through that reference. For example
1b20cd17
NC
366
367 $r = do {my @a; \$#a};
368 $$r = 503
369
b7a902f4 370=item Attempt to use reference as lvalue in substr
371
be771a83
GS
372(W substr) You supplied a reference as the first argument to substr()
373used as an lvalue, which is pretty strange. Perhaps you forgot to
374dereference it first. See L<perlfunc/substr>.
b7a902f4 375
c32124fe
NC
376=item Attribute "locked" is deprecated
377
57dedab9
FC
378(D deprecated) You have used the attributes pragma to modify the
379"locked" attribute on a code reference. The :locked attribute is
380obsolete, has had no effect since 5005 threads were removed, and
381will be removed in a future release of Perl 5.
c32124fe 382
f1a3ce43
NC
383=item Attribute "unique" is deprecated
384
57dedab9
FC
385(D deprecated) You have used the attributes pragma to modify
386the "unique" attribute on an array, hash or scalar reference.
387The :unique attribute has had no effect since Perl 5.8.8, and
388will be removed in a future release of Perl 5.
f1a3ce43 389
ccce04a4
FC
390=item av_reify called on tied array
391
392(S debugging) This indicates that something went wrong and Perl got I<very>
393confused about C<@_> or C<@DB::args> being tied.
394
de42a5a9 395=item Bad arg length for %s, is %u, should be %d
a0d0e21e 396
be771a83
GS
397(F) You passed a buffer of the wrong size to one of msgctl(), semctl()
398or shmctl(). In C parlance, the correct sizes are, respectively,
5f05dabc 399S<sizeof(struct msqid_ds *)>, S<sizeof(struct semid_ds *)>, and
a0d0e21e
LW
400S<sizeof(struct shmid_ds *)>.
401
7a95317d
GS
402=item Bad evalled substitution pattern
403
496a33f5 404(F) You've used the C</e> switch to evaluate the replacement for a
7a95317d
GS
405substitution, but perl found a syntax error in the code to evaluate,
406most likely an unexpected right brace '}'.
407
a0d0e21e
LW
408=item Bad filehandle: %s
409
be771a83
GS
410(F) A symbol was passed to something wanting a filehandle, but the
411symbol has no filehandle associated with it. Perhaps you didn't do an
412open(), or did it in another package.
a0d0e21e
LW
413
414=item Bad free() ignored
415
be771a83 416(S malloc) An internal routine called free() on something that had never
fa816bf3 417been malloc()ed in the first place. Mandatory, but can be disabled by
9ea8bc6d 418setting environment variable C<PERL_BADFREE> to 0.
33c8a3fe 419
9ea8bc6d 420This message can be seen quite often with DB_File on systems with "hard"
6903afa2 421dynamic linking, like C<AIX> and C<OS/2>. It is a bug of C<Berkeley DB>
be771a83 422which is left unnoticed if C<DB> uses I<forgiving> system malloc().
a0d0e21e 423
aa689395 424=item Bad hash
425
426(P) One of the internal hash routines was passed a null HV pointer.
427
6df41af2
GS
428=item Badly placed ()'s
429
430(A) You've accidentally run your script through B<csh> instead
431of Perl. Check the #! line, or manually feed your script into
432Perl yourself.
433
a7cb8dae 434=item Bad name after %s
a0d0e21e 435
be771a83
GS
436(F) You started to name a symbol by using a package prefix, and then
437didn't finish the symbol. In particular, you can't interpolate outside
438of quotes, so
a0d0e21e
LW
439
440 $var = 'myvar';
441 $sym = mypack::$var;
442
443is not the same as
444
445 $var = 'myvar';
446 $sym = "mypack::$var";
447
88e1f1a2
JV
448=item Bad plugin affecting keyword '%s'
449
450(F) An extension using the keyword plugin mechanism violated the
451plugin API.
452
4ad56ec9
IZ
453=item Bad realloc() ignored
454
6903afa2
FC
455(S malloc) An internal routine called realloc() on something that
456had never been malloc()ed in the first place. Mandatory, but can
457be disabled by setting the environment variable C<PERL_BADFREE> to 1.
4ad56ec9 458
a0d0e21e
LW
459=item Bad symbol for array
460
461(P) An internal request asked to add an array entry to something that
462wasn't a symbol table entry.
463
4df3f177
SP
464=item Bad symbol for dirhandle
465
466(P) An internal request asked to add a dirhandle entry to something
467that wasn't a symbol table entry.
468
a0d0e21e
LW
469=item Bad symbol for filehandle
470
be771a83
GS
471(P) An internal request asked to add a filehandle entry to something
472that wasn't a symbol table entry.
a0d0e21e
LW
473
474=item Bad symbol for hash
475
476(P) An internal request asked to add a hash entry to something that
477wasn't a symbol table entry.
478
34d09196
GS
479=item Bareword found in conditional
480
be771a83
GS
481(W bareword) The compiler found a bareword where it expected a
482conditional, which often indicates that an || or && was parsed as part
483of the last argument of the previous construct, for example:
34d09196
GS
484
485 open FOO || die;
486
be771a83
GS
487It may also indicate a misspelled constant that has been interpreted as
488a bareword:
34d09196
GS
489
490 use constant TYPO => 1;
491 if (TYOP) { print "foo" }
492
493The C<strict> pragma is useful in avoiding such errors.
494
6df41af2
GS
495=item Bareword "%s" not allowed while "strict subs" in use
496
497(F) With "strict subs" in use, a bareword is only allowed as a
be771a83
GS
498subroutine identifier, in curly brackets or to the left of the "=>"
499symbol. Perhaps you need to predeclare a subroutine?
6df41af2
GS
500
501=item Bareword "%s" refers to nonexistent package
502
be771a83
GS
503(W bareword) You used a qualified bareword of the form C<Foo::>, but the
504compiler saw no other uses of that namespace before that point. Perhaps
505you need to predeclare a package?
6df41af2 506
a0d0e21e
LW
507=item BEGIN failed--compilation aborted
508
be771a83
GS
509(F) An untrapped exception was raised while executing a BEGIN
510subroutine. Compilation stops immediately and the interpreter is
511exited.
a0d0e21e 512
68dc0745 513=item BEGIN not safe after errors--compilation aborted
514
515(F) Perl found a C<BEGIN {}> subroutine (or a C<use> directive, which
be771a83
GS
516implies a C<BEGIN {}>) after one or more compilation errors had already
517occurred. Since the intended environment for the C<BEGIN {}> could not
518be guaranteed (due to the errors), and since subsequent code likely
519depends on its correct operation, Perl just gave up.
68dc0745 520
6df41af2
GS
521=item \1 better written as $1
522
be771a83
GS
523(W syntax) Outside of patterns, backreferences live on as variables.
524The use of backslashes is grandfathered on the right-hand side of a
525substitution, but stylistically it's better to use the variable form
526because other Perl programmers will expect it, and it works better if
527there are more than 9 backreferences.
6df41af2 528
252aa082
JH
529=item Binary number > 0b11111111111111111111111111111111 non-portable
530
e476b1b5 531(W portable) The binary number you specified is larger than 2**32-1
9e24b6e2
JH
532(4294967295) and therefore non-portable between systems. See
533L<perlport> for more on portability concerns.
252aa082 534
69282e91 535=item bind() on closed socket %s
a0d0e21e 536
be771a83
GS
537(W closed) You tried to do a bind on a closed socket. Did you forget to
538check the return value of your socket() call? See L<perlfunc/bind>.
a0d0e21e 539
c289d2f7
JH
540=item binmode() on closed filehandle %s
541
542(W unopened) You tried binmode() on a filehandle that was never opened.
4dcecea4 543Check your control flow and number of arguments.
c289d2f7 544
d7bb0749 545=item "\b{" is deprecated; use "\b\{" or "\b[{]" instead in regex; marked by <-- HERE in m/%s/
f866a7cd 546
d7bb0749 547=item "\B{" is deprecated; use "\B\{" or "\B[{]" instead in regex; marked by <-- HERE in m/%s/
f866a7cd 548
3c664d1a 549(D deprecated) Use of an unescaped "{" immediately following
a38411bc
FC
550a C<\b> or C<\B> is now deprecated so as to reserve its use for Perl
551itself in a future release. You can either precede the brace
552with a backslash, or enclose it in square brackets; the latter
553is the way to go if the pattern delimiters are C<{}>.
f866a7cd 554
c5a0f51a
JH
555=item Bit vector size > 32 non-portable
556
e476b1b5 557(W portable) Using bit vector sizes larger than 32 is non-portable.
c5a0f51a 558
043c750c 559=item Bizarre copy of %s
4633a7c4 560
be771a83 561(P) Perl detected an attempt to copy an internal value that is not
ab830aa0 562copiable.
4633a7c4 563
5a25739d
FC
564=item Bizarre SvTYPE [%d]
565
434f489b 566(P) When starting a new thread or returning values from a thread, Perl
5a25739d
FC
567encountered an invalid data type.
568
f675dbe5
CB
569=item Buffer overflow in prime_env_iter: %s
570
be771a83
GS
571(W internal) A warning peculiar to VMS. While Perl was preparing to
572iterate over %ENV, it encountered a logical name or symbol definition
573which was too long, so it was truncated to the string shown.
f675dbe5 574
a0d0e21e
LW
575=item Callback called exit
576
4929bf7b 577(F) A subroutine invoked from an external package via call_sv()
a0d0e21e
LW
578exited by calling exit.
579
6df41af2 580=item %s() called too early to check prototype
f675dbe5 581
be771a83
GS
582(W prototype) You've called a function that has a prototype before the
583parser saw a definition or declaration for it, and Perl could not check
584that the call conforms to the prototype. You need to either add an
585early prototype declaration for the subroutine in question, or move the
586subroutine definition ahead of the call to get proper prototype
587checking. Alternatively, if you are certain that you're calling the
588function correctly, you may put an ampersand before the name to avoid
589the warning. See L<perlsub>.
f675dbe5 590
49704364 591=item Cannot compress integer in pack
0258719b
NC
592
593(F) An argument to pack("w",...) was too large to compress. The BER
594compressed integer format can only be used with positive integers, and you
595attempted to compress Infinity or a very large number (> 1e308).
596See L<perlfunc/pack>.
597
49704364 598=item Cannot compress negative numbers in pack
0258719b
NC
599
600(F) An argument to pack("w",...) was negative. The BER compressed integer
601format can only be used with positive integers. See L<perlfunc/pack>.
602
5c1f4d79
NC
603=item Cannot convert a reference to %s to typeglob
604
6903afa2
FC
605(F) You manipulated Perl's symbol table directly, stored a reference
606in it, then tried to access that symbol via conventional Perl syntax.
607The access triggers Perl to autovivify that typeglob, but it there is
608no legal conversion from that type of reference to a typeglob.
5c1f4d79 609
4040665a 610=item Cannot copy to %s
ba2fdce6
NC
611
612(P) Perl detected an attempt to copy a value to an internal type that cannot
4dcecea4 613be directly assigned to.
ba2fdce6 614
b5d97229
RGS
615=item Cannot find encoding "%s"
616
617(S io) You tried to apply an encoding that did not exist to a filehandle,
618either with open() or binmode().
619
7355df7e
FC
620=item Cannot set tied @DB::args
621
622(F) C<caller> tried to set C<@DB::args>, but found it tied. Tying C<@DB::args>
623is not supported. (Before this error was added, it used to crash.)
624
ce65bc73
FC
625=item Cannot tie unreifiable array
626
627(P) You somehow managed to call C<tie> on an array that does not
628keep a reference count on its arguments and cannot be made to
629do so. Such arrays are not even supposed to be accessible to
630Perl code, but are only used internally.
631
96ebfdd7
RK
632=item Can only compress unsigned integers in pack
633
634(F) An argument to pack("w",...) was not an integer. The BER compressed
635integer format can only be used with positive integers, and you attempted
636to compress something else. See L<perlfunc/pack>.
637
a0d0e21e
LW
638=item Can't bless non-reference value
639
640(F) Only hard references may be blessed. This is how Perl "enforces"
641encapsulation of objects. See L<perlobj>.
642
dc57907a
RGS
643=item Can't "break" in a loop topicalizer
644
0d863452 645(F) You called C<break>, but you're in a C<foreach> block rather than
6903afa2 646a C<given> block. You probably meant to use C<next> or C<last>.
0d863452
RH
647
648=item Can't "break" outside a given block
dc57907a 649
0d863452
RH
650(F) You called C<break>, but you're not inside a C<given> block.
651
6df41af2
GS
652=item Can't call method "%s" on an undefined value
653
654(F) You used the syntax of a method call, but the slot filled by the
be771a83
GS
655object reference or package name contains an undefined value. Something
656like this will reproduce the error:
6df41af2
GS
657
658 $BADREF = undef;
659 process $BADREF 1,2,3;
660 $BADREF->process(1,2,3);
661
a0d0e21e
LW
662=item Can't call method "%s" on unblessed reference
663
54310121 664(F) A method call must know in what package it's supposed to run. It
be771a83
GS
665ordinarily finds this out from the object reference you supply, but you
666didn't supply an object reference in this case. A reference isn't an
667object reference until it has been blessed. See L<perlobj>.
a0d0e21e
LW
668
669=item Can't call method "%s" without a package or object reference
670
671(F) You used the syntax of a method call, but the slot filled by the
be771a83
GS
672object reference or package name contains an expression that returns a
673defined value which is neither an object reference nor a package name.
72b5445b
GS
674Something like this will reproduce the error:
675
676 $BADREF = 42;
677 process $BADREF 1,2,3;
678 $BADREF->process(1,2,3);
679
dfe378f1
FC
680=item Can't call mro_isa_changed_in() on anonymous symbol table
681
682(P) Perl got confused as to whether a hash was a plain hash or a
683symbol table hash when trying to update @ISA caches.
684
2bf7e7b2
FC
685=item Can't call mro_method_changed_in() on anonymous symbol table
686
687(F) An XS module tried to call C<mro_method_changed_in> on a hash that was
688not attached to the symbol table.
689
a0d0e21e
LW
690=item Can't chdir to %s
691
f703fc96 692(F) You called C<perl -x/foo/bar>, but F</foo/bar> is not a directory
a0d0e21e
LW
693that you can chdir to, possibly because it doesn't exist.
694
0545a864 695=item Can't check filesystem of script "%s" for nosuid
104d25b7 696
be771a83
GS
697(P) For some reason you can't check the filesystem of the script for
698nosuid.
104d25b7 699
22e74366 700=item Can't coerce %s to %s in %s
a0d0e21e
LW
701
702(F) Certain types of SVs, in particular real symbol table entries
55497cff 703(typeglobs), can't be forced to stop being what they are. So you can't
a0d0e21e
LW
704say things like:
705
706 *foo += 1;
707
708You CAN say
709
710 $foo = *foo;
711 $foo += 1;
712
713but then $foo no longer contains a glob.
714
0d863452 715=item Can't "continue" outside a when block
dc57907a 716
0d863452
RH
717(F) You called C<continue>, but you're not inside a C<when>
718or C<default> block.
719
a0d0e21e
LW
720=item Can't create pipe mailbox
721
be771a83
GS
722(P) An error peculiar to VMS. The process is suffering from exhausted
723quotas or other plumbing problems.
a0d0e21e 724
eb64745e
GS
725=item Can't declare %s in "%s"
726
30c282f6
NC
727(F) Only scalar, array, and hash variables may be declared as "my", "our" or
728"state" variables. They must have ordinary identifiers as names.
a0d0e21e 729
fc7debfb
FC
730=item Can't "default" outside a topicalizer
731
732(F) You have used a C<default> block that is neither inside a
733C<foreach> loop nor a C<given> block. (Note that this error is
734issued on exit from the C<default> block, so you won't get the
735error if you use an explicit C<continue>.)
736
6df41af2
GS
737=item Can't do inplace edit: %s is not a regular file
738
be771a83 739(S inplace) You tried to use the B<-i> switch on a special file, such as
df7075a8 740a file in /dev, a FIFO or an uneditable directory. The file was ignored.
6df41af2 741
a0d0e21e
LW
742=item Can't do inplace edit on %s: %s
743
be771a83
GS
744(S inplace) The creation of the new file failed for the indicated
745reason.
a0d0e21e 746
54310121 747=item Can't do inplace edit without backup
a0d0e21e 748
be771a83
GS
749(F) You're on a system such as MS-DOS that gets confused if you try
750reading from a deleted (but still opened) file. You have to say
751C<-i.bak>, or some such.
a0d0e21e 752
10f9c03d 753=item Can't do inplace edit: %s would not be unique
a0d0e21e 754
e476b1b5 755(S inplace) Your filesystem does not support filenames longer than 14
10f9c03d
CK
756characters and Perl was unable to create a unique filename during
757inplace editing with the B<-i> switch. The file was ignored.
a0d0e21e 758
a0d0e21e
LW
759=item Can't do waitpid with flags
760
be771a83
GS
761(F) This machine doesn't have either waitpid() or wait4(), so only
762waitpid() without flags is emulated.
a0d0e21e 763
a0d0e21e
LW
764=item Can't emulate -%s on #! line
765
be771a83
GS
766(F) The #! line specifies a switch that doesn't make sense at this
767point. For example, it'd be kind of silly to put a B<-x> on the #!
768line.
a0d0e21e 769
1109a392
MHM
770=item Can't %s %s-endian %ss on this platform
771
772(F) Your platform's byte-order is neither big-endian nor little-endian,
773or it has a very strange pointer size. Packing and unpacking big- or
774little-endian floating point values and pointers may not be possible.
775See L<perlfunc/pack>.
776
a0d0e21e
LW
777=item Can't exec "%s": %s
778
d1be9408 779(W exec) A system(), exec(), or piped open call could not execute the
be771a83
GS
780named program for the indicated reason. Typical reasons include: the
781permissions were wrong on the file, the file wasn't found in
782C<$ENV{PATH}>, the executable in question was compiled for another
783architecture, or the #! line in a script points to an interpreter that
784can't be run for similar reasons. (Or maybe your system doesn't support
785#! at all.)
a0d0e21e
LW
786
787=item Can't exec %s
788
be771a83
GS
789(F) Perl was trying to execute the indicated program for you because
790that's what the #! line said. If that's not what you wanted, you may
791need to mention "perl" on the #! line somewhere.
a0d0e21e
LW
792
793=item Can't execute %s
794
be771a83
GS
795(F) You used the B<-S> switch, but the copies of the script to execute
796found in the PATH did not have correct permissions.
2a92aaa0 797
6df41af2 798=item Can't find an opnumber for "%s"
2a92aaa0 799
be771a83
GS
800(F) A string of a form C<CORE::word> was given to prototype(), but there
801is no builtin with the name C<word>.
6df41af2 802
56ca2fc0
JH
803=item Can't find %s character property "%s"
804
805(F) You used C<\p{}> or C<\P{}> but the character property by that name
6903afa2 806could not be found. Maybe you misspelled the name of the property?
e1b711da 807See L<perluniprops/Properties accessible through \p{} and \P{}>
9b73678d 808for a complete list of available official properties.
56ca2fc0 809
6df41af2
GS
810=item Can't find label %s
811
be771a83
GS
812(F) You said to goto a label that isn't mentioned anywhere that it's
813possible for us to go to. See L<perlfunc/goto>.
2a92aaa0
GS
814
815=item Can't find %s on PATH
816
be771a83
GS
817(F) You used the B<-S> switch, but the script to execute could not be
818found in the PATH.
a0d0e21e 819
6df41af2 820=item Can't find %s on PATH, '.' not in PATH
a0d0e21e 821
be771a83
GS
822(F) You used the B<-S> switch, but the script to execute could not be
823found in the PATH, or at least not with the correct permissions. The
824script exists in the current directory, but PATH prohibits running it.
a0d0e21e
LW
825
826=item Can't find string terminator %s anywhere before EOF
827
be771a83
GS
828(F) Perl strings can stretch over multiple lines. This message means
829that the closing delimiter was omitted. Because bracketed quotes count
830nesting levels, the following is missing its final parenthesis:
a0d0e21e 831
fb73857a 832 print q(The character '(' starts a side comment.);
833
97b3d10f 834If you're getting this error from a here-document, you may have
b6b8cb97
FC
835included unseen whitespace before or after your closing tag or there
836may not be a linebreak after it. A good programmer's editor will have
837a way to help you find these characters (or lack of characters). See
838L<perlop> for the full details on here-documents.
a0d0e21e 839
660a4616
TS
840=item Can't find Unicode property definition "%s"
841
5f8ad6b6
FC
842(F) You may have tried to use C<\p> which means a Unicode
843property (for example C<\p{Lu}> matches all uppercase
fa816bf3 844letters). If you did mean to use a Unicode property, see
e1b711da 845L<perluniprops/Properties accessible through \p{} and \P{}>
6903afa2 846for a complete list of available properties. If you didn't
fa816bf3
FC
847mean to use a Unicode property, escape the C<\p>, either by
848C<\\p> (just the C<\p>) or by C<\Q\p> (the rest of the string, or
5f8ad6b6 849until C<\E>).
660a4616 850
b3647a36 851=item Can't fork: %s
a0d0e21e 852
be771a83
GS
853(F) A fatal error occurred while trying to fork while opening a
854pipeline.
a0d0e21e 855
b3647a36
SR
856=item Can't fork, trying again in 5 seconds
857
c973c02e 858(W pipe) A fork in a piped open failed with EAGAIN and will be retried
b3647a36
SR
859after five seconds.
860
748a9306
LW
861=item Can't get filespec - stale stat buffer?
862
be771a83
GS
863(S) A warning peculiar to VMS. This arises because of the difference
864between access checks under VMS and under the Unix model Perl assumes.
865Under VMS, access checks are done by filename, rather than by bits in
866the stat buffer, so that ACLs and other protections can be taken into
867account. Unfortunately, Perl assumes that the stat buffer contains all
868the necessary information, and passes it, instead of the filespec, to
2fe2bdfd 869the access-checking routine. It will try to retrieve the filespec using
be771a83
GS
870the device name and FID present in the stat buffer, but this works only
871if you haven't made a subsequent call to the CRTL stat() routine,
872because the device name is overwritten with each call. If this warning
2fe2bdfd
FC
873appears, the name lookup failed, and the access-checking routine gave up
874and returned FALSE, just to be conservative. (Note: The access-checking
be771a83
GS
875routine knows about the Perl C<stat> operator and file tests, so you
876shouldn't ever see this warning in response to a Perl command; it arises
877only if some internal code takes stat buffers lightly.)
748a9306 878
a0d0e21e
LW
879=item Can't get pipe mailbox device name
880
be771a83
GS
881(P) An error peculiar to VMS. After creating a mailbox to act as a
882pipe, Perl can't retrieve its name for later use.
a0d0e21e
LW
883
884=item Can't get SYSGEN parameter value for MAXBUF
885
748a9306
LW
886(P) An error peculiar to VMS. Perl asked $GETSYI how big you want your
887mailbox buffers to be, and didn't get an answer.
a0d0e21e 888
6df41af2 889=item Can't "goto" into the middle of a foreach loop
a0d0e21e 890
be771a83
GS
891(F) A "goto" statement was executed to jump into the middle of a foreach
892loop. You can't get there from here. See L<perlfunc/goto>.
6df41af2
GS
893
894=item Can't "goto" out of a pseudo block
895
be771a83
GS
896(F) A "goto" statement was executed to jump out of what might look like
897a block, except that it isn't a proper block. This usually occurs if
898you tried to jump out of a sort() block or subroutine, which is a no-no.
899See L<perlfunc/goto>.
a0d0e21e 900
5a25739d
FC
901=item Can't goto subroutine from an eval-%s
902
903(F) The "goto subroutine" call can't be used to jump out of an eval
904"string" or block.
905
9850bf21 906=item Can't goto subroutine from a sort sub (or similar callback)
cd299c6e 907
9850bf21
RH
908(F) The "goto subroutine" call can't be used to jump out of the
909comparison sub for a sort(), or from a similar callback (such
910as the reduce() function in List::Util).
911
6df41af2
GS
912=item Can't goto subroutine outside a subroutine
913
be771a83
GS
914(F) The deeply magical "goto subroutine" call can only replace one
915subroutine call for another. It can't manufacture one out of whole
916cloth. In general you should be calling it out of only an AUTOLOAD
917routine anyway. See L<perlfunc/goto>.
6df41af2 918
0b5b802d
GS
919=item Can't ignore signal CHLD, forcing to default
920
be771a83
GS
921(W signal) Perl has detected that it is being run with the SIGCHLD
922signal (sometimes known as SIGCLD) disabled. Since disabling this
923signal will interfere with proper determination of exit status of child
924processes, Perl has reset the signal to its default value. This
925situation typically indicates that the parent program under which Perl
926may be running (e.g. cron) is being very careless.
0b5b802d 927
e2c0f81f
DG
928=item Can't kill a non-numeric process ID
929
930(F) Process identifiers must be (signed) integers. It is a fatal error to
931attempt to kill() an undefined, empty-string or otherwise non-numeric
932process identifier.
933
6df41af2 934=item Can't "last" outside a loop block
4633a7c4 935
6df41af2 936(F) A "last" statement was executed to break out of the current block,
be771a83
GS
937except that there's this itty bitty problem called there isn't a current
938block. Note that an "if" or "else" block doesn't count as a "loopish"
939block, as doesn't a block given to sort(), map() or grep(). You can
940usually double the curlies to get the same effect though, because the
941inner curlies will be considered a block that loops once. See
942L<perlfunc/last>.
4633a7c4 943
2c7d6b9c
RGS
944=item Can't linearize anonymous symbol table
945
946(F) Perl tried to calculate the method resolution order (MRO) of a
947package, but failed because the package stash has no name.
948
b8170e59
JB
949=item Can't load '%s' for module %s
950
6903afa2
FC
951(F) The module you tried to load failed to load a dynamic extension.
952This may either mean that you upgraded your version of perl to one
953that is incompatible with your old dynamic extensions (which is known
954to happen between major versions of perl), or (more likely) that your
955dynamic extension was built against an older version of the library
956that is installed on your system. You may need to rebuild your old
957dynamic extensions.
b8170e59 958
748a9306
LW
959=item Can't localize lexical variable %s
960
2ba9eb46 961(F) You used local on a variable name that was previously declared as a
b7e4ecc1
FC
962lexical variable using "my" or "state". This is not allowed. If you
963want to localize a package variable of the same name, qualify it with
964the package name.
748a9306 965
6df41af2 966=item Can't localize through a reference
4727527e 967
6df41af2
GS
968(F) You said something like C<local $$ref>, which Perl can't currently
969handle, because when it goes to restore the old value of whatever $ref
be771a83 970pointed to after the scope of the local() is finished, it can't be sure
64977eb6 971that $ref will still be a reference.
4727527e 972
ea071790 973=item Can't locate %s
ec889f3a 974
fa816bf3
FC
975(F) You said to C<do> (or C<require>, or C<use>) a file that couldn't be found.
976Perl looks for the file in all the locations mentioned in @INC, unless
977the file name included the full path to the file. Perhaps you need
978to set the PERL5LIB or PERL5OPT environment variable to say where the
979extra library is, or maybe the script needs to add the library name
be771a83
GS
980to @INC. Or maybe you just misspelled the name of the file. See
981L<perlfunc/require> and L<lib>.
a0d0e21e 982
6df41af2
GS
983=item Can't locate auto/%s.al in @INC
984
be771a83
GS
985(F) A function (or method) was called in a package which allows
986autoload, but there is no function to autoload. Most probable causes
987are a misprint in a function/method name or a failure to C<AutoSplit>
988the file, say, by doing C<make install>.
6df41af2 989
b8170e59
JB
990=item Can't locate loadable object for module %s in @INC
991
992(F) The module you loaded is trying to load an external library, like
d70d8e57 993for example, F<foo.so> or F<bar.dll>, but the L<DynaLoader> module was
b8170e59
JB
994unable to locate this library. See L<DynaLoader>.
995
a0d0e21e
LW
996=item Can't locate object method "%s" via package "%s"
997
998(F) You called a method correctly, and it correctly indicated a package
999functioning as a class, but that package doesn't define that particular
2ba9eb46 1000method, nor does any of its base classes. See L<perlobj>.
a0d0e21e
LW
1001
1002=item Can't locate package %s for @%s::ISA
1003
be771a83
GS
1004(W syntax) The @ISA array contained the name of another package that
1005doesn't seem to exist.
a0d0e21e 1006
2f7da168
RK
1007=item Can't locate PerlIO%s
1008
1009(F) You tried to use in open() a PerlIO layer that does not exist,
1010e.g. open(FH, ">:nosuchlayer", "somefile").
1011
f4ad53f4 1012=item Can't make list assignment to %ENV on this system
3e3baf6d 1013
be771a83
GS
1014(F) List assignment to %ENV is not supported on some systems, notably
1015VMS.
3e3baf6d 1016
cd40cd58
NC
1017=item Can't make loaded symbols global on this platform while loading %s
1018
ff9c1ae8 1019(S) A module passed the flag 0x01 to DynaLoader::dl_load_file() to request
cd40cd58
NC
1020that symbols from the stated file are made available globally within the
1021process, but that functionality is not available on this platform. Whilst
1022the module likely will still work, this may prevent the perl interpreter
1023from loading other XS-based extensions which need to link directly to
1024functions defined in the C or XS code in the stated file.
1025
a0d0e21e
LW
1026=item Can't modify %s in %s
1027
be771a83
GS
1028(F) You aren't allowed to assign to the item indicated, or otherwise try
1029to change it, such as with an auto-increment.
a0d0e21e 1030
54310121 1031=item Can't modify nonexistent substring
a0d0e21e
LW
1032
1033(P) The internal routine that does assignment to a substr() was handed
1034a NULL.
1035
6df41af2
GS
1036=item Can't modify non-lvalue subroutine call
1037
1038(F) Subroutines meant to be used in lvalue context should be declared as
2fe2bdfd 1039such. See L<perlsub/"Lvalue subroutines">.
6df41af2 1040
5f05dabc 1041=item Can't msgrcv to read-only var
a0d0e21e 1042
5f05dabc 1043(F) The target of a msgrcv must be modifiable to be used as a receive
a0d0e21e
LW
1044buffer.
1045
6df41af2
GS
1046=item Can't "next" outside a loop block
1047
1048(F) A "next" statement was executed to reiterate the current block, but
1049there isn't a current block. Note that an "if" or "else" block doesn't
be771a83
GS
1050count as a "loopish" block, as doesn't a block given to sort(), map() or
1051grep(). You can usually double the curlies to get the same effect
1052though, because the inner curlies will be considered a block that loops
1053once. See L<perlfunc/next>.
6df41af2 1054
46fa9b26
FC
1055=item Can't open %s
1056
1057(F) You tried to run a perl built with MAD support with
1058the PERL_XMLDUMP environment variable set, but the file
1059named by that variable could not be opened.
1060
a0d0e21e
LW
1061=item Can't open %s: %s
1062
c47ff5f1 1063(S inplace) The implicit opening of a file through use of the C<< <> >>
08e9d68e 1064filehandle, either implicitly under the C<-n> or C<-p> command-line
46fa9b26
FC
1065switches, or explicitly, failed for the indicated reason. Usually
1066this is because you don't have read permission for a file which
1067you named on the command line.
1068
1069(F) You tried to call perl with the B<-e> switch, but F</dev/null> (or
1070your operating system's equivalent) could not be opened.
a0d0e21e 1071
9a869a14
RGS
1072=item Can't open a reference
1073
1074(W io) You tried to open a scalar reference for reading or writing,
2fe2bdfd 1075using the 3-arg open() syntax:
9a869a14
RGS
1076
1077 open FH, '>', $ref;
1078
1079but your version of perl is compiled without perlio, and this form of
1080open is not supported.
1081
a0d0e21e
LW
1082=item Can't open bidirectional pipe
1083
be771a83
GS
1084(W pipe) You tried to say C<open(CMD, "|cmd|")>, which is not supported.
1085You can try any of several modules in the Perl library to do this, such
1086as IPC::Open2. Alternately, direct the pipe's output to a file using
1087">", and then read it in under a different file handle.
a0d0e21e 1088
748a9306
LW
1089=item Can't open error file %s as stderr
1090
be771a83
GS
1091(F) An error peculiar to VMS. Perl does its own command line
1092redirection, and couldn't open the file specified after '2>' or '2>>' on
1093the command line for writing.
748a9306
LW
1094
1095=item Can't open input file %s as stdin
1096
be771a83
GS
1097(F) An error peculiar to VMS. Perl does its own command line
1098redirection, and couldn't open the file specified after '<' on the
1099command line for reading.
748a9306
LW
1100
1101=item Can't open output file %s as stdout
1102
be771a83
GS
1103(F) An error peculiar to VMS. Perl does its own command line
1104redirection, and couldn't open the file specified after '>' or '>>' on
1105the command line for writing.
748a9306
LW
1106
1107=item Can't open output pipe (name: %s)
1108
be771a83
GS
1109(P) An error peculiar to VMS. Perl does its own command line
1110redirection, and couldn't open the pipe into which to send data destined
1111for stdout.
748a9306 1112
3b1cf97d 1113=item Can't open perl script "%s": %s
a0d0e21e
LW
1114
1115(F) The script you specified can't be opened for the indicated reason.
1116
fa3aa65a
JC
1117If you're debugging a script that uses #!, and normally relies on the
1118shell's $PATH search, the -S option causes perl to do that search, so
1119you don't have to type the path or C<`which $scriptname`>.
1120
6df41af2
GS
1121=item Can't read CRTL environ
1122
1123(S) A warning peculiar to VMS. Perl tried to read an element of %ENV
1124from the CRTL's internal environment array and discovered the array was
1125missing. You need to figure out where your CRTL misplaced its environ
be771a83
GS
1126or define F<PERL_ENV_TABLES> (see L<perlvms>) so that environ is not
1127searched.
6df41af2 1128
6df41af2
GS
1129=item Can't "redo" outside a loop block
1130
1131(F) A "redo" statement was executed to restart the current block, but
1132there isn't a current block. Note that an "if" or "else" block doesn't
1133count as a "loopish" block, as doesn't a block given to sort(), map()
1134or grep(). You can usually double the curlies to get the same effect
1135though, because the inner curlies will be considered a block that
1136loops once. See L<perlfunc/redo>.
1137
64977eb6 1138=item Can't remove %s: %s, skipping file
10f9c03d 1139
be771a83
GS
1140(S inplace) You requested an inplace edit without creating a backup
1141file. Perl was unable to remove the original file to replace it with
1142the modified file. The file was left unmodified.
10f9c03d 1143
a0d0e21e
LW
1144=item Can't rename %s to %s: %s, skipping file
1145
e476b1b5 1146(S inplace) The rename done by the B<-i> switch failed for some reason,
10f9c03d 1147probably because you don't have write permission to the directory.
a0d0e21e 1148
748a9306
LW
1149=item Can't reopen input pipe (name: %s) in binary mode
1150
be771a83
GS
1151(P) An error peculiar to VMS. Perl thought stdin was a pipe, and tried
1152to reopen it to accept binary data. Alas, it failed.
748a9306 1153
4f12ec0e
FC
1154=item Can't reset %ENV on this system
1155
1156(F) You called C<reset('E')> or similar, which tried to reset
1157all variables in the current package beginning with "E". In
1158the main package, that includes %ENV. Resetting %ENV is not
1159supported on some systems, notably VMS.
1160
fe13d51d 1161=item Can't resolve method "%s" overloading "%s" in package "%s"
6df41af2 1162
1fa582fa
FC
1163(F)(P) Error resolving overloading specified by a method name (as
1164opposed to a subroutine reference): no such method callable via the
1165package. If the method name is C<???>, this is an internal error.
6df41af2 1166
cd06dffe
GS
1167=item Can't return %s from lvalue subroutine
1168
be771a83
GS
1169(F) Perl detected an attempt to return illegal lvalues (such as
1170temporary or readonly values) from a subroutine used as an lvalue. This
1171is not allowed.
cd06dffe 1172
96ebfdd7
RK
1173=item Can't return outside a subroutine
1174
1175(F) The return statement was executed in mainline code, that is, where
1176there was no subroutine call to return out of. See L<perlsub>.
1177
78f9721b
SM
1178=item Can't return %s to lvalue scalar context
1179
6903afa2
FC
1180(F) You tried to return a complete array or hash from an lvalue
1181subroutine, but you called the subroutine in a way that made Perl
1182think you meant to return only one value. You probably meant to
1183write parentheses around the call to the subroutine, which tell
1184Perl that the call should be in list context.
78f9721b 1185
a0d0e21e
LW
1186=item Can't stat script "%s"
1187
be771a83
GS
1188(P) For some reason you can't fstat() the script even though you have it
1189open already. Bizarre.
a0d0e21e 1190
a0d0e21e
LW
1191=item Can't take log of %g
1192
fb73857a 1193(F) For ordinary real numbers, you can't take the logarithm of a
6903afa2 1194negative number or zero. There's a Math::Complex package that comes
be771a83
GS
1195standard with Perl, though, if you really want to do that for the
1196negative numbers.
a0d0e21e
LW
1197
1198=item Can't take sqrt of %g
1199
1200(F) For ordinary real numbers, you can't take the square root of a
fb73857a 1201negative number. There's a Math::Complex package that comes standard
1202with Perl, though, if you really want to do that.
a0d0e21e
LW
1203
1204=item Can't undef active subroutine
1205
1206(F) You can't undefine a routine that's currently running. You can,
1207however, redefine it while it's running, and you can even undef the
1208redefined subroutine while the old routine is running. Go figure.
1209
c81225bc 1210=item Can't upgrade %s (%d) to %d
a0d0e21e 1211
be771a83
GS
1212(P) The internal sv_upgrade routine adds "members" to an SV, making it
1213into a more specialized kind of SV. The top several SV types are so
1214specialized, however, that they cannot be interconverted. This message
1215indicates that such a conversion was attempted.
a0d0e21e 1216
6651ba0b
FC
1217=item Can't use '%c' after -mname
1218
1219(F) You tried to call perl with the B<-m> switch, but you put something
1220other than "=" after the module name.
1221
1db89ea5
BS
1222=item Can't use anonymous symbol table for method lookup
1223
e27ad1f2 1224(F) The internal routine that does method lookup was handed a symbol
1db89ea5
BS
1225table that doesn't have a name. Symbol tables can become anonymous
1226for example by undefining stashes: C<undef %Some::Package::>.
1227
96ebfdd7
RK
1228=item Can't use an undefined value as %s reference
1229
1230(F) A value used as either a hard reference or a symbolic reference must
1231be a defined value. This helps to delurk some insidious errors.
1232
6df41af2
GS
1233=item Can't use bareword ("%s") as %s ref while "strict refs" in use
1234
be771a83
GS
1235(F) Only hard references are allowed by "strict refs". Symbolic
1236references are disallowed. See L<perlref>.
6df41af2 1237
90b75b61 1238=item Can't use %! because Errno.pm is not available
1d2dff63 1239
20561843 1240(F) The first time the C<%!> hash is used, perl automatically loads the
6903afa2 1241Errno.pm module. The Errno module is expected to tie the %! hash to
1d2dff63
GS
1242provide symbolic names for C<$!> errno values.
1243
1109a392
MHM
1244=item Can't use both '<' and '>' after type '%c' in %s
1245
1246(F) A type cannot be forced to have both big-endian and little-endian
1247byte-order at the same time, so this combination of modifiers is not
1248allowed. See L<perlfunc/pack>.
1249
6df41af2
GS
1250=item Can't use %s for loop variable
1251
be771a83
GS
1252(F) Only a simple scalar variable may be used as a loop variable on a
1253foreach.
6df41af2 1254
aab6a793 1255=item Can't use global %s in "%s"
6df41af2 1256
be771a83
GS
1257(F) You tried to declare a magical variable as a lexical variable. This
1258is not allowed, because the magic can be tied to only one location
1259(namely the global variable) and it would be incredibly confusing to
1260have variables in your program that looked like magical variables but
6df41af2
GS
1261weren't.
1262
6d3b25aa
RGS
1263=item Can't use '%c' in a group with different byte-order in %s
1264
1265(F) You attempted to force a different byte-order on a type
1266that is already inside a group with a byte-order modifier.
1267For example you cannot force little-endianness on a type that
1268is inside a big-endian group.
1269
c07a80fd 1270=item Can't use "my %s" in sort comparison
1271
1272(F) The global variables $a and $b are reserved for sort comparisons.
c47ff5f1 1273You mentioned $a or $b in the same line as the <=> or cmp operator,
c07a80fd 1274and the variable had earlier been declared as a lexical variable.
1275Either qualify the sort variable with the package name, or rename the
1276lexical variable.
1277
a0d0e21e
LW
1278=item Can't use %s ref as %s ref
1279
1280(F) You've mixed up your reference types. You have to dereference a
1281reference of the type needed. You can use the ref() function to
1282test the type of the reference, if need be.
1283
748a9306 1284=item Can't use string ("%s") as %s ref while "strict refs" in use
a0d0e21e 1285
5e634d20
FC
1286=item Can't use string ("%s"...) as %s ref while "strict refs" in use
1287
b41bf23f
FC
1288(F) You've told Perl to dereference a string, something which
1289C<use strict> blocks to prevent it happening accidentally. See
1290L<perlref/"Symbolic references">. This can be triggered by an C<@> or C<$>
1291in a double-quoted string immediately before interpolating a variable,
1292for example in C<"user @$twitter_id">, which says to treat the contents
1293of C<$twitter_id> as an array reference; use a C<\> to have a literal C<@>
1294symbol followed by the contents of C<$twitter_id>: C<"user \@$twitter_id">.
a0d0e21e 1295
748a9306
LW
1296=item Can't use subscript on %s
1297
1298(F) The compiler tried to interpret a bracketed expression as a
1299subscript. But to the left of the brackets was an expression that
209e7cf1 1300didn't look like a hash or array reference, or anything else subscriptable.
748a9306 1301
6df41af2
GS
1302=item Can't use \%c to mean $%c in expression
1303
75b44862
GS
1304(W syntax) In an ordinary expression, backslash is a unary operator that
1305creates a reference to its argument. The use of backslash to indicate a
1306backreference to a matched substring is valid only as part of a regular
be771a83
GS
1307expression pattern. Trying to do this in ordinary Perl code produces a
1308value that prints out looking like SCALAR(0xdecaf). Use the $1 form
1309instead.
6df41af2 1310
810b8aa5
GS
1311=item Can't weaken a nonreference
1312
1313(F) You attempted to weaken something that was not a reference. Only
1314references can be weakened.
1315
fc7debfb
FC
1316=item Can't "when" outside a topicalizer
1317
1318(F) You have used a when() block that is neither inside a C<foreach>
1319loop nor a C<given> block. (Note that this error is issued on exit
1320from the C<when> block, so you won't get the error if the match fails,
1321or if you use an explicit C<continue>.)
1322
5f05dabc 1323=item Can't x= to read-only value
a0d0e21e 1324
be771a83
GS
1325(F) You tried to repeat a constant value (often the undefined value)
1326with an assignment operator, which implies modifying the value itself.
a0d0e21e
LW
1327Perhaps you need to copy the value to a temporary, and repeat that.
1328
4a68bf9d 1329=item Character following "\c" must be ASCII
f9d13529 1330
3c664d1a 1331(F)(D deprecated, syntax) In C<\cI<X>>, I<X> must be an ASCII character.
675fa9ff
FC
1332It is planned to make this fatal in all instances in Perl v5.20. In
1333the cases where it isn't fatal, the character this evaluates to is
17a3df4c
KW
1334derived by exclusive or'ing the code point of this character with 0x40.
1335
c9faaf04
KW
1336Note that non-alphabetic ASCII characters are discouraged here as well,
1337and using non-printable ones will be deprecated starting in v5.18.
f9d13529 1338
f337b084 1339=item Character in 'C' format wrapped in pack
ac7cd81a
SC
1340
1341(W pack) You said
1342
1343 pack("C", $x)
1344
1345where $x is either less than 0 or more than 255; the C<"C"> format is
1346only for encoding native operating system characters (ASCII, EBCDIC,
1347and so on) and not for Unicode characters, so Perl behaved as if you meant
1348
1349 pack("C", $x & 255)
1350
1351If you actually want to pack Unicode codepoints, use the C<"U"> format
1352instead.
1353
f337b084 1354=item Character in 'c' format wrapped in pack
ac7cd81a
SC
1355
1356(W pack) You said
1357
1358 pack("c", $x)
1359
1360where $x is either less than -128 or more than 127; the C<"c"> format
1361is only for encoding native operating system characters (ASCII, EBCDIC,
1362and so on) and not for Unicode characters, so Perl behaved as if you meant
1363
1364 pack("c", $x & 255);
1365
1366If you actually want to pack Unicode codepoints, use the C<"U"> format
1367instead.
1368
f337b084
TH
1369=item Character in '%c' format wrapped in unpack
1370
1371(W unpack) You tried something like
1372
1373 unpack("H", "\x{2a1}")
1374
1a147d38 1375where the format expects to process a byte (a character with a value
6903afa2
FC
1376below 256), but a higher value was provided instead. Perl uses the
1377value modulus 256 instead, as if you had provided:
f337b084
TH
1378
1379 unpack("H", "\x{a1}")
1380
5a25739d
FC
1381=item Character in 'W' format wrapped in pack
1382
1383(W pack) You said
1384
1385 pack("U0W", $x)
1386
1387where $x is either less than 0 or more than 255. However, C<U0>-mode
1388expects all values to fall in the interval [0, 255], so Perl behaved
1389as if you meant:
1390
1391 pack("U0W", $x & 255)
1392
f337b084
TH
1393=item Character(s) in '%c' format wrapped in pack
1394
1395(W pack) You tried something like
1396
1397 pack("u", "\x{1f3}b")
1398
1a147d38 1399where the format expects to process a sequence of bytes (character with a
6903afa2 1400value below 256), but some of the characters had a higher value. Perl
f337b084
TH
1401uses the character values modulus 256 instead, as if you had provided:
1402
1403 pack("u", "\x{f3}b")
1404
1405=item Character(s) in '%c' format wrapped in unpack
1406
1407(W unpack) You tried something like
1408
1409 unpack("s", "\x{1f3}b")
1410
1a147d38 1411where the format expects to process a sequence of bytes (character with a
6903afa2 1412value below 256), but some of the characters had a higher value. Perl
f337b084
TH
1413uses the character values modulus 256 instead, as if you had provided:
1414
1415 unpack("s", "\x{f3}b")
1416
f866a7cd
FC
1417=item "\c{" is deprecated and is more clearly written as ";"
1418
1419(D deprecated, syntax) The C<\cI<X>> construct is intended to be a way
1420to specify non-printable characters. You used it with a "{" which
1421evaluates to ";", which is printable. It is planned to remove the
c9faaf04 1422ability to specify a semi-colon this way in Perl 5.20. Just use a
f866a7cd
FC
1423semi-colon or a backslash-semi-colon without the "\c".
1424
1425=item "\c%c" is more clearly written simply as "%s"
1426
1427(W syntax) The C<\cI<X>> construct is intended to be a way to specify
1428non-printable characters. You used it for a printable one, which is better
1429written as simply itself, perhaps preceded by a backslash for non-word
1430characters.
1431
6651ba0b
FC
1432=item Cloning substitution context is unimplemented
1433
1434(F) Creating a new thread inside the C<s///> operator is not supported.
1435
abc7ecad
SP
1436=item closedir() attempted on invalid dirhandle %s
1437
1438(W io) The dirhandle you tried to close is either closed or not really
1439a dirhandle. Check your control flow.
1440
5a25739d
FC
1441=item close() on unopened filehandle %s
1442
1443(W unopened) You tried to close a filehandle that was never opened.
1444
541ed3a9
FC
1445=item Closure prototype called
1446
1447(F) If a closure has attributes, the subroutine passed to an attribute
1448handler is the prototype that is cloned when a new closure is created.
1449This subroutine cannot be called.
1450
49704364
WL
1451=item Code missing after '/'
1452
6903afa2
FC
1453(F) You had a (sub-)template that ends with a '/'. There must be
1454another template code following the slash. See L<perlfunc/pack>.
49704364 1455
6fbc9859
MH
1456=item Code point 0x%X is not Unicode, all \p{} matches fail; all \P{} matches
1457succeed
9ae3ac1a 1458
5a25739d
FC
1459=item Code point 0x%X is not Unicode, may not be portable
1460
e2f4a215 1461(S utf8, non_unicode) You had a code point above the Unicode maximum
1b64326b
FC
1462of U+10FFFF.
1463
1464Perl allows strings to contain a superset of Unicode code points, up
1465to the limit of what is storable in an unsigned integer on your system,
1466but these may not be accepted by other languages/systems. At one time,
1467it was legal in some standards to have code points up to 0x7FFF_FFFF,
1468but not higher. Code points above 0xFFFF_FFFF require larger than a
146932 bit word.
0876b9a0 1470
9ae3ac1a
KW
1471None of the Unicode or Perl-defined properties will match a non-Unicode
1472code point. For example,
1473
1474 chr(0x7FF_FFFF) =~ /\p{Any}/
1475
1476will not match, because the code point is not in Unicode. But
1477
1478 chr(0x7FF_FFFF) =~ /\P{Any}/
1479
1480will match.
1481
94b42e47
KW
1482This may be counterintuitive at times, as both these fail:
1483
f9d4ccdc
FC
1484 chr(0x110000) =~ /\p{ASCII_Hex_Digit=True}/ # Fails.
1485 chr(0x110000) =~ /\p{ASCII_Hex_Digit=False}/ # Also fails!
94b42e47
KW
1486
1487and both these succeed:
1488
f9d4ccdc
FC
1489 chr(0x110000) =~ /\P{ASCII_Hex_Digit=True}/ # Succeeds.
1490 chr(0x110000) =~ /\P{ASCII_Hex_Digit=False}/ # Also succeeds!
94b42e47 1491
6df41af2
GS
1492=item %s: Command not found
1493
a892b81a
FC
1494(A) You've accidentally run your script through B<csh> or another shell
1495shell instead of Perl. Check the #! line, or manually feed your script
1496into Perl yourself. The #! line at the top of your file could look like
8f721816
MM
1497
1498 #!/usr/bin/perl -w
6df41af2 1499
7a2e2cd6 1500=item Compilation failed in require
1501
1502(F) Perl could not compile a file specified in a C<require> statement.
be771a83
GS
1503Perl uses this generic message when none of the errors that it
1504encountered were severe enough to halt compilation immediately.
7a2e2cd6 1505
c3464db5
DD
1506=item Complex regular subexpression recursion limit (%d) exceeded
1507
be771a83
GS
1508(W regexp) The regular expression engine uses recursion in complex
1509situations where back-tracking is required. Recursion depth is limited
1510to 32766, or perhaps less in architectures where the stack cannot grow
1511arbitrarily. ("Simple" and "medium" situations are handled without
1512recursion and are not subject to a limit.) Try shortening the string
1513under examination; looping in Perl code (e.g. with C<while>) rather than
1514in the regular expression engine; or rewriting the regular expression so
c2e66d9e 1515that it is simpler or backtracks less. (See L<perlfaq2> for information
be771a83 1516on I<Mastering Regular Expressions>.)
c3464db5 1517
38875929
DM
1518=item cond_broadcast() called on unlocked variable
1519
6903afa2
FC
1520(W threads) Within a thread-enabled program, you tried to
1521call cond_broadcast() on a variable which wasn't locked.
1522The cond_broadcast() function is used to wake up another thread
1523that is waiting in a cond_wait(). To ensure that the signal isn't
1524sent before the other thread has a chance to enter the wait, it
1525is usual for the signaling thread first to wait for a lock on
1526variable. This lock attempt will only succeed after the other
1527thread has entered cond_wait() and thus relinquished the lock.
38875929 1528
38875929
DM
1529=item cond_signal() called on unlocked variable
1530
6903afa2
FC
1531(W threads) Within a thread-enabled program, you tried to
1532call cond_signal() on a variable which wasn't locked. The
1533cond_signal() function is used to wake up another thread that
1534is waiting in a cond_wait(). To ensure that the signal isn't
1535sent before the other thread has a chance to enter the wait, it
1536is usual for the signaling thread first to wait for a lock on
1537variable. This lock attempt will only succeed after the other
1538thread has entered cond_wait() and thus relinquished the lock.
38875929 1539
69282e91 1540=item connect() on closed socket %s
a0d0e21e 1541
be771a83
GS
1542(W closed) You tried to do a connect on a closed socket. Did you forget
1543to check the return value of your socket() call? See
1544L<perlfunc/connect>.
a0d0e21e 1545
e21e7c6a
FC
1546=item Constant(%s): Call to &{$^H{%s}} did not return a defined value
1547
1548(F) The subroutine registered to handle constant overloading
1549(see L<overload>) or a custom charnames handler (see
1550L<charnames/CUSTOM TRANSLATORS>) returned an undefined value.
1551
1552=item Constant(%s): $^H{%s} is not defined
1553
1554(F) The parser found inconsistencies while attempting to define an
1555overloaded constant. Perhaps you forgot to load the corresponding
1556L<overload> pragma?.
1557
779c5bc9
GS
1558=item Constant is not %s reference
1559
1560(F) A constant value (perhaps declared using the C<use constant> pragma)
be771a83 1561is being dereferenced, but it amounts to the wrong type of reference.
6903afa2 1562The message indicates the type of reference that was expected. This
be771a83 1563usually indicates a syntax error in dereferencing the constant value.
779c5bc9
GS
1564See L<perlsub/"Constant Functions"> and L<constant>.
1565
4cee8e80
CS
1566=item Constant subroutine %s redefined
1567
aeb94125
FC
1568(W redefine)(S) You redefined a subroutine which had previously
1569been eligible for inlining. See L<perlsub/"Constant Functions">
1570for commentary and workarounds.
4cee8e80 1571
9607fc9c 1572=item Constant subroutine %s undefined
1573
be771a83
GS
1574(W misc) You undefined a subroutine which had previously been eligible
1575for inlining. See L<perlsub/"Constant Functions"> for commentary and
1576workarounds.
9607fc9c 1577
5a25739d
FC
1578=item Constant(%s) unknown
1579
1580(F) The parser found inconsistencies either while attempting
1581to define an overloaded constant, or when trying to find the
1582character name specified in the C<\N{...}> escape. Perhaps you
1583forgot to load the corresponding L<overload> pragma?.
1584
e7ea3e70
IZ
1585=item Copy method did not return a reference
1586
6903afa2 1587(F) The method which overloads "=" is buggy. See
13a2d996 1588L<overload/Copy Constructor>.
e7ea3e70 1589
4aaa4757
FC
1590=item &CORE::%s cannot be called directly
1591
1592(F) You tried to call a subroutine in the C<CORE::> namespace
8d605c0d 1593with C<&foo> syntax or through a reference. Some subroutines
4aaa4757
FC
1594in this package cannot yet be called that way, but must be
1595called as barewords. Something like this will work:
1596
1597 BEGIN { *shove = \&CORE::push; }
1598 shove @array, 1,2,3; # pushes on to @array
1599
6798c92b
GS
1600=item CORE::%s is not a keyword
1601
1602(F) The CORE:: namespace is reserved for Perl keywords.
1603
675fa9ff
FC
1604=item Corrupted regexp opcode %d > %d
1605
1606(P) This is either an error in Perl, or, if you're using
1607one, your L<custom regular expression engine|perlreapi>. If not the
1608latter, report the problem through the L<perlbug> utility.
1609
a0d0e21e
LW
1610=item corrupted regexp pointers
1611
1612(P) The regular expression engine got confused by what the regular
1613expression compiler gave it.
1614
1615=item corrupted regexp program
1616
be771a83
GS
1617(P) The regular expression engine got passed a regexp program without a
1618valid magic number.
a0d0e21e 1619
de42a5a9 1620=item Corrupt malloc ptr 0x%x at 0x%x
6df41af2
GS
1621
1622(P) The malloc package that comes with Perl had an internal failure.
1623
49704364
WL
1624=item Count after length/code in unpack
1625
1626(F) You had an unpack template indicating a counted-length string, but
1627you have also specified an explicit size for the string. See
1628L<perlfunc/pack>.
1629
6651ba0b
FC
1630=item Deep recursion on anonymous subroutine
1631
a0d0e21e
LW
1632=item Deep recursion on subroutine "%s"
1633
be771a83
GS
1634(W recursion) This subroutine has called itself (directly or indirectly)
1635100 times more than it has returned. This probably indicates an
1636infinite recursion, unless you're writing strange benchmark programs, in
1637which case it indicates something else.
a0d0e21e 1638
aad1d01f
NC
1639This threshold can be changed from 100, by recompiling the F<perl> binary,
1640setting the C pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value.
1641
f10b0346 1642=item defined(@array) is deprecated
69794302 1643
be771a83
GS
1644(D deprecated) defined() is not usually useful on arrays because it
1645checks for an undefined I<scalar> value. If you want to see if the
64977eb6 1646array is empty, just use C<if (@array) { # not empty }> for example.
69794302 1647
f10b0346 1648=item defined(%hash) is deprecated
69794302 1649
f0ec9725
KR
1650(D deprecated) C<defined()> is not usually right on hashes and has been
1651discouraged since 5.004.
1652
1653Although C<defined %hash> is false on a plain not-yet-used hash, it
1654becomes true in several non-obvious circumstances, including iterators,
1655weak references, stash names, even remaining true after C<undef %hash>.
1656These things make C<defined %hash> fairly useless in practice.
1657
1658If a check for non-empty is what you wanted then just put it in boolean
1659context (see L<perldata/Scalar values>):
16546e45
KR
1660
1661 if (%hash) {
1662 # not empty
1663 }
1664
f0ec9725
KR
1665If you had C<defined %Foo::Bar::QUUX> to check whether such a package
1666variable exists then that's never really been reliable, and isn't
1667a good way to enquire about the features of a package, or whether
1668it's loaded, etc.
1669
69794302 1670
6fbc9859
MH
1671=item (?(DEFINE)....) does not allow branches in regex; marked by <-- HERE in
1672m/%s/
bcb95744 1673
6903afa2 1674(F) You used something like C<(?(DEFINE)...|..)> which is illegal. The
bcb95744
FC
1675most likely cause of this error is that you left out a parenthesis inside
1676of the C<....> part.
1677
9e3ec65c 1678The <-- HERE shows whereabouts in the regular expression the problem was
bcb95744
FC
1679discovered.
1680
62658f4d
PM
1681=item %s defines neither package nor VERSION--version check failed
1682
1683(F) You said something like "use Module 42" but in the Module file
1684there are neither package declarations nor a C<$VERSION>.
1685
fc36a67e 1686=item Delimiter for here document is too long
1687
be771a83
GS
1688(F) In a here document construct like C<<<FOO>, the label C<FOO> is too
1689long for Perl to handle. You have to be seriously twisted to write code
1690that triggers this error.
fc36a67e 1691
6d3b25aa
RGS
1692=item Deprecated use of my() in false conditional
1693
fa816bf3
FC
1694(D deprecated) You used a declaration similar to C<my $x if 0>. There
1695has been a long-standing bug in Perl that causes a lexical variable
6d3b25aa 1696not to be cleared at scope exit when its declaration includes a false
6903afa2 1697conditional. Some people have exploited this bug to achieve a kind of
fa816bf3 1698static variable. Since we intend to fix this bug, we don't want people
6903afa2 1699relying on this behavior. You can achieve a similar static effect by
6d3b25aa 1700declaring the variable in a separate block outside the function, eg
36fb85f3 1701
6d3b25aa
RGS
1702 sub f { my $x if 0; return $x++ }
1703
1704becomes
1705
1706 { my $x; sub f { return $x++ } }
1707
fa816bf3
FC
1708Beginning with perl 5.9.4, you can also use C<state> variables to have
1709lexicals that are initialized only once (see L<feature>):
36fb85f3
RGS
1710
1711 sub f { state $x; return $x++ }
1712
500ab966
RGS
1713=item DESTROY created new reference to dead object '%s'
1714
1715(F) A DESTROY() method created a new reference to the object which is
6903afa2
FC
1716just being DESTROYed. Perl is confused, and prefers to abort rather
1717than to create a dangling reference.
500ab966 1718
3cdd684c
TP
1719=item Did not produce a valid header
1720
1721See Server error.
1722
6df41af2
GS
1723=item %s did not return a true value
1724
1725(F) A required (or used) file must return a true value to indicate that
1726it compiled correctly and ran its initialization code correctly. It's
1727traditional to end such a file with a "1;", though any true value would
1728do. See L<perlfunc/require>.
1729
cc507455 1730=item (Did you mean &%s instead?)
4633a7c4 1731
413ff9f6
FC
1732(W misc) You probably referred to an imported subroutine &FOO as $FOO or
1733some such.
4633a7c4 1734
cc507455 1735=item (Did you mean "local" instead of "our"?)
33633739 1736
be771a83
GS
1737(W misc) Remember that "our" does not localize the declared global
1738variable. You have declared it again in the same lexical scope, which
1739seems superfluous.
33633739 1740
cc507455 1741=item (Did you mean $ or @ instead of %?)
a0d0e21e 1742
be771a83
GS
1743(W) You probably said %hash{$key} when you meant $hash{$key} or
1744@hash{@keys}. On the other hand, maybe you just meant %hash and got
1745carried away.
748a9306 1746
7e1af8bc 1747=item Died
5f05dabc 1748
1749(F) You passed die() an empty string (the equivalent of C<die "">) or
075b00aa 1750you called it with no args and C<$@> was empty.
5f05dabc 1751
3cdd684c
TP
1752=item Document contains no data
1753
1754See Server error.
1755
62658f4d
PM
1756=item %s does not define %s::VERSION--version check failed
1757
1758(F) You said something like "use Module 42" but the Module did not
943fc58e 1759define a C<$VERSION>.
62658f4d 1760
49704364
WL
1761=item '/' does not take a repeat count
1762
1763(F) You cannot put a repeat count of any kind right after the '/' code.
1764See L<perlfunc/pack>.
1765
4021c788 1766=item Don't know how to handle magic of type \%o
a0d0e21e
LW
1767
1768(P) The internal handling of magical variables has been cursed.
1769
1770=item do_study: out of memory
1771
1772(P) This should have been caught by safemalloc() instead.
1773
6df41af2
GS
1774=item (Do you need to predeclare %s?)
1775
56da5a46
RGS
1776(S syntax) This is an educated guess made in conjunction with the message
1777"%s found where operator expected". It often means a subroutine or module
6df41af2
GS
1778name is being referenced that hasn't been declared yet. This may be
1779because of ordering problems in your file, or because of a missing
be771a83
GS
1780"sub", "package", "require", or "use" statement. If you're referencing
1781something that isn't defined yet, you don't actually have to define the
1782subroutine or package before the current location. You can use an empty
1783"sub foo;" or "package FOO;" to enter a "forward" declaration.
6df41af2 1784
ac206dc8
RGS
1785=item dump() better written as CORE::dump()
1786
1787(W misc) You used the obsolescent C<dump()> built-in function, without fully
1788qualifying it as C<CORE::dump()>. Maybe it's a typo. See L<perlfunc/dump>.
1789
84d78eb7
YO
1790=item dump is not supported
1791
1792(F) Your machine doesn't support dump/undump.
1793
a0d0e21e
LW
1794=item Duplicate free() ignored
1795
be771a83
GS
1796(S malloc) An internal routine called free() on something that had
1797already been freed.
a0d0e21e 1798
1109a392
MHM
1799=item Duplicate modifier '%c' after '%c' in %s
1800
35f0cd76
FC
1801(W unpack) You have applied the same modifier more than once after a
1802type in a pack template. See L<perlfunc/pack>.
1109a392 1803
4633a7c4
LW
1804=item elseif should be elsif
1805
fa816bf3
FC
1806(S syntax) There is no keyword "elseif" in Perl because Larry thinks
1807it's ugly. Your code will be interpreted as an attempt to call a method
1808named "elseif" for the class returned by the following block. This is
4633a7c4
LW
1809unlikely to be what you want.
1810
c608e803 1811=item Empty \%c{} in regex; marked by <-- HERE in m/%s/
ab13f0c7 1812
af6f566e 1813(F) C<\p> and C<\P> are used to introduce a named Unicode property, as
6903afa2 1814described in L<perlunicode> and L<perlre>. You used C<\p> or C<\P> in
af6f566e 1815a regular expression without specifying the property name.
ab13f0c7 1816
85ab1d1d 1817=item entering effective %s failed
5ff3f7a4 1818
85ab1d1d 1819(F) While under the C<use filetest> pragma, switching the real and
5ff3f7a4
GS
1820effective uids or gids failed.
1821
c038024b
RGS
1822=item %ENV is aliased to %s
1823
1824(F) You're running under taint mode, and the C<%ENV> variable has been
1825aliased to another hash, so it doesn't reflect anymore the state of the
6903afa2 1826program's environment. This is potentially insecure.
c038024b 1827
748a9306
LW
1828=item Error converting file specification %s
1829
5f05dabc 1830(F) An error peculiar to VMS. Because Perl may have to deal with file
748a9306 1831specifications in either VMS or Unix syntax, it converts them to a
be771a83
GS
1832single form when it must operate on them directly. Either you've passed
1833an invalid file specification to Perl, or you've found a case the
1834conversion routines don't handle. Drat.
748a9306 1835
ff56e4f1
KW
1836=item Escape literal pattern white space under /x
1837
1838(D deprecated) You compiled a regular expression pattern with C</x> to
1839ignore white space, and you used, as a literal, one of the characters
1840that Perl plans to eventually treat as white space. The character must
1841be escaped somehow, or it will work differently on a future Perl that
1842does treat it as white space. The easiest way is to insert a backslash
1843immediately before it, or to enclose it with square brackets. This
1844change is to bring Perl into conformance with Unicode recommendations.
1845Here are the five characters that generate this warning:
1846U+0085 NEXT LINE,
1847U+200E LEFT-TO-RIGHT MARK,
1848U+200F RIGHT-TO-LEFT MARK,
1849U+2028 LINE SEPARATOR,
1850and
1851U+2029 PARAGRAPH SEPARATOR.
1852
ad19ef22 1853=item Eval-group in insecure regular expression
e4d48cc9 1854
be771a83
GS
1855(F) Perl detected tainted data when trying to compile a regular
1856expression that contains the C<(?{ ... })> zero-width assertion, which
1857is unsafe. See L<perlre/(?{ code })>, and L<perlsec>.
e4d48cc9 1858
ad19ef22 1859=item Eval-group not allowed at runtime, use re 'eval' in regex m/%s/
e4d48cc9 1860
be771a83
GS
1861(F) Perl tried to compile a regular expression containing the
1862C<(?{ ... })> zero-width assertion at run time, as it would when the
f11307f5
FC
1863pattern contains interpolated values. Since that is a security risk,
1864it is not allowed. If you insist, you may still do this by using the
1865C<re 'eval'> pragma or by explicitly building the pattern from an
1866interpolated string at run time and using that in an eval(). See
1867L<perlre/(?{ code })>.
e4d48cc9 1868
ad19ef22 1869=item Eval-group not allowed, use re 'eval' in regex m/%s/
6df41af2 1870
be771a83
GS
1871(F) A regular expression contained the C<(?{ ... })> zero-width
1872assertion, but that construct is only allowed when the C<use re 'eval'>
1873pragma is in effect. See L<perlre/(?{ code })>.
6df41af2 1874
6fbc9859
MH
1875=item EVAL without pos change exceeded limit in regex; marked by <-- HERE in
1876m/%s/
1a147d38
YO
1877
1878(F) You used a pattern that nested too many EVAL calls without consuming
6903afa2 1879any text. Restructure the pattern so that text is consumed.
1a147d38 1880
9e3ec65c 1881The <-- HERE shows whereabouts in the regular expression the problem was
1a147d38
YO
1882discovered.
1883
fc36a67e 1884=item Excessively long <> operator
1885
1886(F) The contents of a <> operator may not exceed the maximum size of a
1887Perl identifier. If you're just trying to glob a long list of
1888filenames, try using the glob() operator, or put the filenames into a
1889variable and glob that.
1890
ed9aa3b7
SG
1891=item exec? I'm not *that* kind of operating system
1892
af8bb25a 1893(F) The C<exec> function is not implemented on some systems, e.g., Symbian
6903afa2 1894OS. See L<perlport>.
ed9aa3b7 1895
fe13d51d 1896=item Execution of %s aborted due to compilation errors.
a0d0e21e
LW
1897
1898(F) The final summary message when a Perl compilation fails.
1899
1900=item Exiting eval via %s
1901
be771a83
GS
1902(W exiting) You are exiting an eval by unconventional means, such as a
1903goto, or a loop control statement.
e476b1b5
GS
1904
1905=item Exiting format via %s
1906
9a2ff54b 1907(W exiting) You are exiting a format by unconventional means, such as a
be771a83 1908goto, or a loop control statement.
a0d0e21e 1909
0a753a76 1910=item Exiting pseudo-block via %s
1911
be771a83
GS
1912(W exiting) You are exiting a rather special block construct (like a
1913sort block or subroutine) by unconventional means, such as a goto, or a
1914loop control statement. See L<perlfunc/sort>.
0a753a76 1915
a0d0e21e
LW
1916=item Exiting subroutine via %s
1917
be771a83
GS
1918(W exiting) You are exiting a subroutine by unconventional means, such
1919as a goto, or a loop control statement.
a0d0e21e
LW
1920
1921=item Exiting substitution via %s
1922
be771a83
GS
1923(W exiting) You are exiting a substitution by unconventional means, such
1924as a return, a goto, or a loop control statement.
a0d0e21e 1925
c608e803
KW
1926=item Expecting close bracket in regex; marked by <-- HERE in m/%s/
1927
675fa9ff 1928(F) You wrote something like
c608e803
KW
1929
1930 (?13
1931
1932to denote a capturing group of the form
1933L<C<(?I<PARNO>)>|perlre/(?PARNO) (?-PARNO) (?+PARNO) (?R) (?0)>,
1934but omitted the C<")">.
1935
27350048
FC
1936=item Expecting '(?flags:(?[...' in regex; marked by <-- HERE in m/%s/
1937
8b6fbf55
FC
1938(F) The C<(?[...])> extended character class regular expression construct
1939only allows character classes (including character class escapes like
1940C<\d>), operators, and parentheses. The one exception is C<(?flags:...)>
1941containing at least one flag and exactly one C<(?[...])> construct.
27350048
FC
1942This allows a regular expression containing just C<(?[...])> to be
1943interpolated. If you see this error message, then you probably
1944have some other C<(?...)> construct inside your character class. See
1945L<perlrecharclass/Extended Bracketed Character Classes>.
1946
e7d0b801
FC
1947=item Experimental "%s" subs not enabled
1948
1949(F) To use lexical subs, you must first enable them:
1950
f1d34ca8 1951 no warnings 'experimental::lexical_subs';
e7d0b801
FC
1952 use feature 'lexical_subs';
1953 my sub foo { ... }
1954
7b8d334a
GS
1955=item Explicit blessing to '' (assuming package main)
1956
be771a83
GS
1957(W misc) You are blessing a reference to a zero length string. This has
1958the effect of blessing the reference into the package main. This is
1959usually not what you want. Consider providing a default target package,
1960e.g. bless($ref, $p || 'MyPackage');
7b8d334a 1961
6df41af2
GS
1962=item %s: Expression syntax
1963
be771a83
GS
1964(A) You've accidentally run your script through B<csh> instead of Perl.
1965Check the #! line, or manually feed your script into Perl yourself.
6df41af2
GS
1966
1967=item %s failed--call queue aborted
1968
3c10abe3
AG
1969(F) An untrapped exception was raised while executing a UNITCHECK,
1970CHECK, INIT, or END subroutine. Processing of the remainder of the
1971queue of such routines has been prematurely ended.
6df41af2 1972
7253e4e3 1973=item False [] range "%s" in regex; marked by <-- HERE in m/%s/
73b437c8 1974
4f2e2aa2 1975(W regexp)(F) A character class range must start and end at a literal
7253e4e3 1976character, not another character class like C<\d> or C<[:alpha:]>. The "-"
3c6ca74a
FC
1977in your false range is interpreted as a literal "-". In a C<(?[...])>
1978construct, this is an error, rather than a warning. Consider quoting
1979the "-", "\-". The <-- HERE shows whereabouts in the regular expression
1980the problem was discovered. See L<perlre>.
73b437c8 1981
1b1ee2ef 1982=item Fatal VMS error (status=%d) at %s, line %d
a0d0e21e 1983
be771a83
GS
1984(P) An error peculiar to VMS. Something untoward happened in a VMS
1985system service or RTL routine; Perl's exit status should provide more
1986details. The filename in "at %s" and the line number in "line %d" tell
1987you which section of the Perl source code is distressed.
a0d0e21e
LW
1988
1989=item fcntl is not implemented
1990
1991(F) Your machine apparently doesn't implement fcntl(). What is this, a
1992PDP-11 or something?
1993
22846ab4
AB
1994=item FETCHSIZE returned a negative value
1995
1996(F) A tied array claimed to have a negative number of elements, which
1997is not possible.
1998
f337b084
TH
1999=item Field too wide in 'u' format in pack
2000
d8b5cc61 2001(W pack) Each line in an uuencoded string starts with a length indicator
6903afa2
FC
2002which can't encode values above 63. So there is no point in asking for
2003a line length bigger than that. Perl will behave as if you specified
5c96f6f7 2004C<u63> as the format.
f337b084 2005
af8c498a 2006=item Filehandle %s opened only for input
a0d0e21e 2007
6c8d78fb
HS
2008(W io) You tried to write on a read-only filehandle. If you intended
2009it to be a read-write filehandle, you needed to open it with "+<" or
2010"+>" or "+>>" instead of with "<" or nothing. If you intended only to
2011write the file, use ">" or ">>". See L<perlfunc/open>.
a0d0e21e 2012
af8c498a 2013=item Filehandle %s opened only for output
a0d0e21e 2014
6c8d78fb
HS
2015(W io) You tried to read from a filehandle opened only for writing, If
2016you intended it to be a read/write filehandle, you needed to open it
89a1bda8
FC
2017with "+<" or "+>" or "+>>" instead of with ">". If you intended only to
2018read from the file, use "<". See L<perlfunc/open>. Another possibility
2019is that you attempted to open filedescriptor 0 (also known as STDIN) for
2020output (maybe you closed STDIN earlier?).
97828cef
RGS
2021
2022=item Filehandle %s reopened as %s only for input
2023
2024(W io) You opened for reading a filehandle that got the same filehandle id
6903afa2 2025as STDOUT or STDERR. This occurred because you closed STDOUT or STDERR
97828cef
RGS
2026previously.
2027
2028=item Filehandle STDIN reopened as %s only for output
2029
2030(W io) You opened for writing a filehandle that got the same filehandle id
fa816bf3 2031as STDIN. This occurred because you closed STDIN previously.
a0d0e21e
LW
2032
2033=item Final $ should be \$ or $name
2034
2035(F) You must now decide whether the final $ in a string was meant to be
be771a83
GS
2036a literal dollar sign, or was meant to introduce a variable name that
2037happens to be missing. So you have to put either the backslash or the
2038name.
a0d0e21e 2039
56e90b21
GS
2040=item flock() on closed filehandle %s
2041
be771a83 2042(W closed) The filehandle you're attempting to flock() got itself closed
c289d2f7 2043some time before now. Check your control flow. flock() operates on
be771a83
GS
2044filehandles. Are you attempting to call flock() on a dirhandle by the
2045same name?
56e90b21 2046
6df41af2
GS
2047=item Format not terminated
2048
2049(F) A format must be terminated by a line with a solitary dot. Perl got
2050to the end of your file without finding such a line.
2051
a0d0e21e
LW
2052=item Format %s redefined
2053
e476b1b5 2054(W redefine) You redefined a format. To suppress this warning, say
a0d0e21e
LW
2055
2056 {
271595cc 2057 no warnings 'redefine';
a0d0e21e
LW
2058 eval "format NAME =...";
2059 }
2060
a0d0e21e
LW
2061=item Found = in conditional, should be ==
2062
e476b1b5 2063(W syntax) You said
a0d0e21e
LW
2064
2065 if ($foo = 123)
2066
2067when you meant
2068
2069 if ($foo == 123)
2070
2071(or something like that).
2072
6df41af2
GS
2073=item %s found where operator expected
2074
56da5a46
RGS
2075(S syntax) The Perl lexer knows whether to expect a term or an operator.
2076If it sees what it knows to be a term when it was expecting to see an
be771a83
GS
2077operator, it gives you this warning. Usually it indicates that an
2078operator or delimiter was omitted, such as a semicolon.
6df41af2 2079
a0d0e21e
LW
2080=item gdbm store returned %d, errno %d, key "%s"
2081
2082(S) A warning from the GDBM_File extension that a store failed.
2083
2084=item gethostent not implemented
2085
2086(F) Your C library apparently doesn't implement gethostent(), probably
2087because if it did, it'd feel morally obligated to return every hostname
2088on the Internet.
2089
69282e91 2090=item get%sname() on closed socket %s
a0d0e21e 2091
be771a83
GS
2092(W closed) You tried to get a socket or peer socket name on a closed
2093socket. Did you forget to check the return value of your socket() call?
a0d0e21e 2094
748a9306
LW
2095=item getpwnam returned invalid UIC %#o for user "%s"
2096
2097(S) A warning peculiar to VMS. The call to C<sys$getuai> underlying the
2098C<getpwnam> operator returned an invalid UIC.
2099
6df41af2
GS
2100=item getsockopt() on closed socket %s
2101
be771a83
GS
2102(W closed) You tried to get a socket option on a closed socket. Did you
2103forget to check the return value of your socket() call? See
6df41af2
GS
2104L<perlfunc/getsockopt>.
2105
0f539b13
BF
2106=item given is experimental
2107
675fa9ff
FC
2108(S experimental::smartmatch) C<given> depends on smartmatch, which
2109is experimental, so its behavior may change or even be removed
2110in any future release of perl. See the explanation under
2111L<perlsyn/Experimental Details on given and when>.
0f539b13 2112
6df41af2
GS
2113=item Global symbol "%s" requires explicit package name
2114
a4edf47d 2115(F) You've said "use strict" or "use strict vars", which indicates
30c282f6 2116that all variables must either be lexically scoped (using "my" or "state"),
a4edf47d
GS
2117declared beforehand using "our", or explicitly qualified to say
2118which package the global variable is in (using "::").
6df41af2 2119
e476b1b5
GS
2120=item glob failed (%s)
2121
5ead438e 2122(S glob) Something went wrong with the external program(s) used
73c4e9dc
FC
2123for C<glob> and C<< <*.c> >>. Usually, this means that you supplied a C<glob>
2124pattern that caused the external program to fail and exit with a
be771a83 2125nonzero status. If the message indicates that the abnormal exit
73c4e9dc
FC
2126resulted in a coredump, this may also mean that your csh (C shell)
2127is broken. If so, you should change all of the csh-related variables
2128in config.sh: If you have tcsh, make the variables refer to it as
2129if it were csh (e.g. C<full_csh='/usr/bin/tcsh'>); otherwise, make them
2130all empty (except that C<d_csh> should be C<'undef'>) so that Perl will
be771a83 2131think csh is missing. In either case, after editing config.sh, run
75b44862 2132C<./Configure -S> and rebuild Perl.
e476b1b5 2133
a0d0e21e
LW
2134=item Glob not terminated
2135
2136(F) The lexer saw a left angle bracket in a place where it was expecting
be771a83
GS
2137a term, so it's looking for the corresponding right angle bracket, and
2138not finding it. Chances are you left some needed parentheses out
2139earlier in the line, and you really meant a "less than".
a0d0e21e 2140
bcd05b94 2141=item gmtime(%f) too large
8b56d6ff 2142
e9200be3 2143(W overflow) You called C<gmtime> with a number that was larger than
fc003d4b 2144it can reliably handle and C<gmtime> probably returned the wrong
6903afa2 2145date. This warning is also triggered with NaN (the special
fc003d4b
MS
2146not-a-number value).
2147
bcd05b94 2148=item gmtime(%f) too small
fc003d4b 2149
e9200be3 2150(W overflow) You called C<gmtime> with a number that was smaller than
e7a1a147 2151it can reliably handle and C<gmtime> probably returned the wrong date.
8b56d6ff 2152
6df41af2 2153=item Got an error from DosAllocMem
a0d0e21e 2154
6df41af2
GS
2155(P) An error peculiar to OS/2. Most probably you're using an obsolete
2156version of Perl, and this should not happen anyway.
a0d0e21e
LW
2157
2158=item goto must have label
2159
2160(F) Unlike with "next" or "last", you're not allowed to goto an
2161unspecified destination. See L<perlfunc/goto>.
2162
6651ba0b
FC
2163=item Goto undefined subroutine%s
2164
2165(F) You tried to call a subroutine with C<goto &sub> syntax, but
2166the indicated subroutine hasn't been defined, or if it was, it
2167has since been undefined.
2168
6fbc9859
MH
2169=item Group name must start with a non-digit word character in regex; marked by
2170<-- HERE in m/%s/
1f4f6bf1
YO
2171
2172(F) Group names must follow the rules for perl identifiers, meaning
f26c79ba
FC
2173they must start with a non-digit word character. A common cause of
2174this error is using (?&0) instead of (?0). See L<perlre>.
1f4f6bf1 2175
5a25739d
FC
2176=item ()-group starts with a count
2177
2178(F) A ()-group started with a count. A count is supposed to follow
2179something: a template character or a ()-group. See L<perlfunc/pack>.
2180
fe13d51d 2181=item %s had compilation errors.
6df41af2
GS
2182
2183(F) The final summary message when a C<perl -c> fails.
2184
a0d0e21e
LW
2185=item Had to create %s unexpectedly
2186
be771a83
GS
2187(S internal) A routine asked for a symbol from a symbol table that ought
2188to have existed already, but for some reason it didn't, and had to be
2189created on an emergency basis to prevent a core dump.
a0d0e21e
LW
2190
2191=item Hash %%s missing the % in argument %d of %s()
2192
be771a83
GS
2193(D deprecated) Really old Perl let you omit the % on hash names in some
2194spots. This is now heavily deprecated.
a0d0e21e 2195
6df41af2
GS
2196=item %s has too many errors
2197
2198(F) The parser has given up trying to parse the program after 10 errors.
2199Further error messages would likely be uninformative.
2200
252aa082
JH
2201=item Hexadecimal number > 0xffffffff non-portable
2202
e476b1b5 2203(W portable) The hexadecimal number you specified is larger than 2**32-1
9e24b6e2
JH
2204(4294967295) and therefore non-portable between systems. See
2205L<perlport> for more on portability concerns.
252aa082 2206
8903cb82 2207=item Identifier too long
2208
2209(F) Perl limits identifiers (names for variables, functions, etc.) to
fc36a67e 2210about 250 characters for simple names, and somewhat more for compound
be771a83
GS
2211names (like C<$A::B>). You've exceeded Perl's limits. Future versions
2212of Perl are likely to eliminate these arbitrary limitations.
8903cb82 2213
b33c0c71 2214=item Ignoring zero length \N{} in character class in regex; marked by <-- HERE in m/%s/
fc8cd66c 2215
b5e3739b
FC
2216(W regexp) Named Unicode character escapes C<(\N{...})> may return a
2217zero-length sequence. When such an escape is used in a character class
2218its behaviour is not well defined. Check that the correct escape has
fc8cd66c
YO
2219been used, and the correct charname handler is in scope.
2220
6df41af2 2221=item Illegal binary digit %s
f675dbe5 2222
6df41af2 2223(F) You used a digit other than 0 or 1 in a binary number.
f675dbe5 2224
6df41af2 2225=item Illegal binary digit %s ignored
a0d0e21e 2226
be771a83
GS
2227(W digit) You may have tried to use a digit other than 0 or 1 in a
2228binary number. Interpretation of the binary number stopped before the
2229offending digit.
a0d0e21e 2230
6597eb22
FC
2231=item Illegal character after '_' in prototype for %s : %s
2232
e4d150f1
FC
2233(W illegalproto) An illegal character was found in a prototype
2234declaration. The '_' in a prototype must be followed by a ';',
2235indicating the rest of the parameters are optional, or one of '@'
2236or '%', since those two will accept 0 or more final parameters.
6597eb22 2237
78d0fecf 2238=item Illegal character \%o (carriage return)
4fdae800 2239
d5898338 2240(F) Perl normally treats carriage returns in the program text as it
be771a83
GS
2241would any other whitespace, which means you should never see this error
2242when Perl was built using standard options. For some reason, your
2243version of Perl appears to have been built without this support. Talk
2244to your Perl administrator.
4fdae800 2245
d37a9538
ST
2246=item Illegal character in prototype for %s : %s
2247
197afce1 2248(W illegalproto) An illegal character was found in a prototype declaration.
2e9cc7ef 2249Legal characters in prototypes are $, @, %, *, ;, [, ], &, \, and +.
d37a9538 2250
904d85c5
RGS
2251=item Illegal declaration of anonymous subroutine
2252
2253(F) When using the C<sub> keyword to construct an anonymous subroutine,
6903afa2 2254you must always specify a block of code. See L<perlsub>.
904d85c5 2255
8e742a20
MHM
2256=item Illegal declaration of subroutine %s
2257
6903afa2 2258(F) A subroutine was not declared correctly. See L<perlsub>.
8e742a20 2259
a0d0e21e
LW
2260=item Illegal division by zero
2261
be771a83
GS
2262(F) You tried to divide a number by 0. Either something was wrong in
2263your logic, or you need to put a conditional in to guard against
2264meaningless input.
a0d0e21e 2265
6df41af2
GS
2266=item Illegal hexadecimal digit %s ignored
2267
be771a83
GS
2268(W digit) You may have tried to use a character other than 0 - 9 or
2269A - F, a - f in a hexadecimal number. Interpretation of the hexadecimal
2270number stopped before the illegal character.
6df41af2 2271
a0d0e21e
LW
2272=item Illegal modulus zero
2273
be771a83
GS
2274(F) You tried to divide a number by 0 to get the remainder. Most
2275numbers don't take to this kindly.
a0d0e21e 2276
6df41af2 2277=item Illegal number of bits in vec
399388f4 2278
6df41af2
GS
2279(F) The number of bits in vec() (the third argument) must be a power of
2280two from 1 to 32 (or 64, if your platform supports that).
399388f4
GS
2281
2282=item Illegal octal digit %s
a0d0e21e 2283
d1be9408 2284(F) You used an 8 or 9 in an octal number.
a0d0e21e 2285
399388f4 2286=item Illegal octal digit %s ignored
748a9306 2287
d1be9408 2288(W digit) You may have tried to use an 8 or 9 in an octal number.
75b44862 2289Interpretation of the octal number stopped before the 8 or 9.
748a9306 2290
c608e803
KW
2291=item Illegal pattern in regex; marked by <-- HERE in m/%s/
2292
675fa9ff 2293(F) You wrote something like
c608e803
KW
2294
2295 (?+foo)
2296
2297The C<"+"> is valid only when followed by digits, indicating a
2298capturing group. See
2299L<C<(?I<PARNO>)>|perlre/(?PARNO) (?-PARNO) (?+PARNO) (?R) (?0)>.
2300
fe13d51d 2301=item Illegal switch in PERL5OPT: -%c
6ff81951 2302
6df41af2 2303(X) The PERL5OPT environment variable may only be used to set the
646ca9b2 2304following switches: B<-[CDIMUdmtw]>.
6ff81951 2305
6df41af2 2306=item Ill-formed CRTL environ value "%s"
81e118e0 2307
75b44862 2308(W internal) A warning peculiar to VMS. Perl tried to read the CRTL's
be771a83
GS
2309internal environ array, and encountered an element without the C<=>
2310delimiter used to separate keys from values. The element is ignored.
09bef843 2311
6df41af2 2312=item Ill-formed message in prime_env_iter: |%s|
54310121 2313
be771a83
GS
2314(W internal) A warning peculiar to VMS. Perl tried to read a logical
2315name or CLI symbol definition when preparing to iterate over %ENV, and
2316didn't see the expected delimiter between key and value, so the line was
2317ignored.
54310121 2318
6df41af2 2319=item (in cleanup) %s
9607fc9c 2320
be771a83
GS
2321(W misc) This prefix usually indicates that a DESTROY() method raised
2322the indicated exception. Since destructors are usually called by the
2323system at arbitrary points during execution, and often a vast number of
2324times, the warning is issued only once for any number of failures that
2325would otherwise result in the same message being repeated.
6df41af2 2326
be771a83
GS
2327Failure of user callbacks dispatched using the C<G_KEEPERR> flag could
2328also result in this warning. See L<perlcall/G_KEEPERR>.
9607fc9c 2329
0d0b4b3b
KW
2330=item Incomplete expression within '(?[ ])' in regex; marked by <-- HERE in m/%s/
2331
675fa9ff 2332(F) There was a syntax error within the C<(?[ ])>. This can happen if the
0d0b4b3b
KW
2333expression inside the construct was completely empty, or if there are
2334too many or few operands for the number of operators. Perl is not smart
2335enough to give you a more precise indication as to what is wrong.
2336
6fbc9859
MH
2337=item Inconsistent hierarchy during C3 merge of class '%s': merging failed on
2338parent '%s'
2c7d6b9c
RGS
2339
2340(F) The method resolution order (MRO) of the given class is not
2341C3-consistent, and you have enabled the C3 MRO for this class. See the C3
2342documentation in L<mro> for more information.
2343
979699d9
JH
2344=item In EBCDIC the v-string components cannot exceed 2147483647
2345
2346(F) An error peculiar to EBCDIC. Internally, v-strings are stored as
2347Unicode code points, and encoded in EBCDIC as UTF-EBCDIC. The UTF-EBCDIC
2348encoding is limited to code points no larger than 2147483647 (0x7FFFFFFF).
2349
6a2ed79a 2350=item Infinite recursion in regex
1a147d38
YO
2351
2352(F) You used a pattern that references itself without consuming any input
6903afa2 2353text. You should check the pattern to ensure that recursive patterns
1a147d38
YO
2354either consume text or fail.
2355
6dbe9451
NC
2356=item Initialization of state variables in list context currently forbidden
2357
6903afa2
FC
2358(F) Currently the implementation of "state" only permits the
2359initialization of scalar variables in scalar context. Re-write
2360C<state ($a) = 42> as C<state $a = 42> to change from list to scalar
2361context. Constructions such as C<state (@a) = foo()> will be
2362supported in a future perl release.
6dbe9451 2363
a0d0e21e
LW
2364=item Insecure dependency in %s
2365
8b1a09fc 2366(F) You tried to do something that the tainting mechanism didn't like.
be771a83
GS
2367The tainting mechanism is turned on when you're running setuid or
2368setgid, or when you specify B<-T> to turn it on explicitly. The
2369tainting mechanism labels all data that's derived directly or indirectly
2370from the user, who is considered to be unworthy of your trust. If any
2371such data is used in a "dangerous" operation, you get this error. See
2372L<perlsec> for more information.
a0d0e21e
LW
2373
2374=item Insecure directory in %s
2375
be771a83
GS
2376(F) You can't use system(), exec(), or a piped open in a setuid or
2377setgid script if C<$ENV{PATH}> contains a directory that is writable by
df98f984
RGS
2378the world. Also, the PATH must not contain any relative directory.
2379See L<perlsec>.
a0d0e21e 2380
62f468fc 2381=item Insecure $ENV{%s} while running %s
a0d0e21e
LW
2382
2383(F) You can't use system(), exec(), or a piped open in a setuid or
62f468fc 2384setgid script if any of C<$ENV{PATH}>, C<$ENV{IFS}>, C<$ENV{CDPATH}>,
332d5f78
SR
2385C<$ENV{ENV}>, C<$ENV{BASH_ENV}> or C<$ENV{TERM}> are derived from data
2386supplied (or potentially supplied) by the user. The script must set
2387the path to a known value, using trustworthy data. See L<perlsec>.
a0d0e21e 2388
0e9be77f
DM
2389=item Insecure user-defined property %s
2390
2391(F) Perl detected tainted data when trying to compile a regular
2392expression that contains a call to a user-defined character property
2393function, i.e. C<\p{IsFoo}> or C<\p{InFoo}>.
2394See L<perlunicode/User-Defined Character Properties> and L<perlsec>.
2395
675fa9ff
FC
2396=item In '(?...)', splitting the initial '(?' is deprecated in regex; marked by <-- HERE in m/%s/
2397
2398(D regexp, deprecated) The two-character sequence C<"(?"> in
2399this context in a regular expression pattern should be an
2400indivisible token, with nothing intervening between the C<"(">
2401and the C<"?">, but you separated them. Due to an accident of
2402implementation, this prohibition was not enforced, but we do
2403plan to forbid it in a future Perl version. This message
2404serves as giving you fair warning of this pending change.
2405
b9ef414d
FC
2406=item Integer overflow in format string for %s
2407
2408(F) The indexes and widths specified in the format string of C<printf()>
2409or C<sprintf()> are too large. The numbers must not overflow the size of
2410integers for your architecture.
2411
a7ae9550
GS
2412=item Integer overflow in %s number
2413
35928bc5 2414(S overflow) The hexadecimal, octal or binary number you have specified
be771a83
GS
2415either as a literal or as an argument to hex() or oct() is too big for
2416your architecture, and has been converted to a floating point number.
2417On a 32-bit architecture the largest hexadecimal, octal or binary number
9e24b6e2
JH
2418representable without overflow is 0xFFFFFFFF, 037777777777, or
24190b11111111111111111111111111111111 respectively. Note that Perl
2420transparently promotes all numbers to a floating point representation
2421internally--subject to loss of precision errors in subsequent
2422operations.
bbce6d69 2423
fc89ca81
FC
2424=item Integer overflow in srand
2425
2426(S overflow) The number you have passed to srand is too big to fit
2427in your architecture's integer representation. The number has been
2428replaced with the largest integer supported (0xFFFFFFFF on 32-bit
2429architectures). This means you may be getting less randomness than
2430you expect, because different random seeds above the maximum will
2431return the same sequence of random numbers.
2432
46314c13
JP
2433=item Integer overflow in version
2434
18da5252
FC
2435=item Integer overflow in version %d
2436
784d71ed
FC
2437(W overflow) Some portion of a version initialization is too large for
2438the size of integers for your architecture. This is not a warning
f084e84f 2439because there is no rational reason for a version to try and use an
784d71ed
FC
2440element larger than typically 2**32. This is usually caused by trying
2441to use some odd mathematical operation as a version, like 100/9.
46314c13 2442
7253e4e3 2443=item Internal disaster in regex; marked by <-- HERE in m/%s/
6df41af2
GS
2444
2445(P) Something went badly wrong in the regular expression parser.
9e3ec65c 2446The <-- HERE shows whereabouts in the regular expression the problem was
b45f050a
JF
2447discovered.
2448
748a9306
LW
2449=item Internal inconsistency in tracking vforks
2450
be771a83
GS
2451(S) A warning peculiar to VMS. Perl keeps track of the number of times
2452you've called C<fork> and C<exec>, to determine whether the current call
2453to C<exec> should affect the current script or a subprocess (see
2454L<perlvms/"exec LIST">). Somehow, this count has become scrambled, so
2455Perl is making a guess and treating this C<exec> as a request to
2456terminate the Perl script and execute the specified command.
748a9306 2457
870978ae
FC
2458=item internal %<num>p might conflict with future printf extensions
2459
2460(S internal) Perl's internal routine that handles C<printf> and C<sprintf>
2461formatting follows a slightly different set of rules when called from
2462C or XS code. Specifically, formats consisting of digits followed
2463by "p" (e.g., "%7p") are reserved for future use. If you see this
2464message, then an XS module tried to call that routine with one such
2465reserved format.
2466
7253e4e3 2467=item Internal urp in regex; marked by <-- HERE in m/%s/
b45f050a 2468
fa816bf3 2469(P) Something went badly awry in the regular expression parser. The
9e3ec65c 2470<-- HERE shows whereabouts in the regular expression the problem was
7253e4e3 2471discovered.
a0d0e21e 2472
6df41af2
GS
2473=item %s (...) interpreted as function
2474
75b44862 2475(W syntax) You've run afoul of the rule that says that any list operator
be771a83 2476followed by parentheses turns into a function, with all the list
64977eb6 2477operators arguments found inside the parentheses. See
13a2d996 2478L<perlop/Terms and List Operators (Leftward)>.
6df41af2 2479
09bef843
SB
2480=item Invalid %s attribute: %s
2481
a4a4c9e2 2482(F) The indicated attribute for a subroutine or variable was not recognized
09bef843
SB
2483by Perl or by a user-supplied handler. See L<attributes>.
2484
2485=item Invalid %s attributes: %s
2486
a4a4c9e2 2487(F) The indicated attributes for a subroutine or variable were not
be771a83 2488recognized by Perl or by a user-supplied handler. See L<attributes>.
09bef843 2489
225fb84f
KW
2490=item Invalid character in charnames alias definition; marked by <-- HERE in '%s
2491
2492(F) You tried to create a custom alias for a character name, with
2493the C<:alias> option to C<use charnames> and the specified character in
2494the indicated name isn't valid. See L<charnames/CUSTOM ALIASES>.
2495
5a25739d
FC
2496=item Invalid character in \N{...}; marked by <-- HERE in \N{%s}
2497
2498(F) Only certain characters are valid for character names. The
2499indicated one isn't. See L<charnames/CUSTOM ALIASES>.
2500
c635e13b 2501=item Invalid conversion in %s: "%s"
2502
be771a83
GS
2503(W printf) Perl does not understand the given format conversion. See
2504L<perlfunc/sprintf>.
c635e13b 2505
6fbc9859
MH
2506=item Invalid escape in the specified encoding in regex; marked by <-- HERE in
2507m/%s/
9e08bc66
TS
2508
2509(W regexp) The numeric escape (for example C<\xHH>) of value < 256
2510didn't correspond to a single character through the conversion
2511from the encoding specified by the encoding pragma.
2512The escape was replaced with REPLACEMENT CHARACTER (U+FFFD) instead.
9e3ec65c 2513The <-- HERE shows whereabouts in the regular expression the
9e08bc66
TS
2514escape was discovered.
2515
8149aa9f
FC
2516=item Invalid hexadecimal number in \N{U+...}
2517
6fbc9859
MH
2518=item Invalid hexadecimal number in \N{U+...} in regex; marked by <-- HERE in
2519m/%s/
aec0ef10 2520
8149aa9f 2521(F) The character constant represented by C<...> is not a valid hexadecimal
74f8e9e3
FC
2522number. Either it is empty, or you tried to use a character other than
25230 - 9 or A - F, a - f in a hexadecimal number.
8149aa9f 2524
6651ba0b
FC
2525=item Invalid module name %s with -%c option: contains single ':'
2526
2527(F) The module argument to perl's B<-m> and B<-M> command-line options
2528cannot contain single colons in the module name, but only in the
2529arguments after "=". In other words, B<-MFoo::Bar=:baz> is ok, but
2530B<-MFoo:Bar=baz> is not.
2531
2c7d6b9c
RGS
2532=item Invalid mro name: '%s'
2533
162a3e34
FC
2534(F) You tried to C<mro::set_mro("classname", "foo")> or C<use mro 'foo'>,
2535where C<foo> is not a valid method resolution order (MRO). Currently,
2536the only valid ones supported are C<dfs> and C<c3>, unless you have loaded
2537a module that is a MRO plugin. See L<mro> and L<perlmroapi>.
2c7d6b9c 2538
40e4140b
FC
2539=item Invalid negative number (%s) in chr
2540
2541(W utf8) You passed a negative number to C<chr>. Negative numbers are
2542not valid characters numbers, so it return the Unicode replacement
2543character (U+FFFD).
2544
6651ba0b
FC
2545=item invalid option -D%c, use -D'' to see choices
2546
8ff21bfe
FC
2547(S debugging) Perl was called with invalid debugger flags. Call perl
2548with the B<-D> option with no flags to see the list of acceptable values.
982c4ecb 2549See also L<perlrun/-Dletters>.
6651ba0b 2550
7253e4e3 2551=item Invalid [] range "%s" in regex; marked by <-- HERE in m/%s/
6df41af2
GS
2552
2553(F) The range specified in a character class had a minimum character
7253e4e3
RK
2554greater than the maximum character. One possibility is that you forgot the
2555C<{}> from your ending C<\x{}> - C<\x> without the curly braces can go only
9e3ec65c 2556up to C<ff>. The <-- HERE shows whereabouts in the regular expression the
7253e4e3 2557problem was discovered. See L<perlre>.
6df41af2 2558
d1573ac7 2559=item Invalid range "%s" in transliteration operator
c2e66d9e
GS
2560
2561(F) The range specified in the tr/// or y/// operator had a minimum
2562character greater than the maximum character. See L<perlop>.
2563
09bef843
SB
2564=item Invalid separator character %s in attribute list
2565
0120eecf 2566(F) Something other than a colon or whitespace was seen between the
be771a83
GS
2567elements of an attribute list. If the previous attribute had a
2568parenthesised parameter list, perhaps that list was terminated too soon.
2569See L<attributes>.
09bef843 2570
b4581f09
JH
2571=item Invalid separator character %s in PerlIO layer specification %s
2572
2bfc5f71
FC
2573(W layer) When pushing layers onto the Perl I/O system, something other
2574than a colon or whitespace was seen between the elements of a layer list.
b4581f09
JH
2575If the previous attribute had a parenthesised parameter list, perhaps that
2576list was terminated too soon.
2577
2c86d456
DG
2578=item Invalid strict version format (%s)
2579
fa816bf3 2580(F) A version number did not meet the "strict" criteria for versions.
2c86d456
DG
2581A "strict" version number is a positive decimal number (integer or
2582decimal-fraction) without exponentiation or else a dotted-decimal
2583v-string with a leading 'v' character and at least three components.
a6485a24 2584The parenthesized text indicates which criteria were not met.
2c86d456
DG
2585See the L<version> module for more details on allowed version formats.
2586
49704364 2587=item Invalid type '%s' in %s
96e4d5b1 2588
49704364
WL
2589(F) The given character is not a valid pack or unpack type.
2590See L<perlfunc/pack>.
6728c851 2591
49704364 2592(W) The given character is not a valid pack or unpack type but used to be
75b44862 2593silently ignored.
96e4d5b1 2594
2c86d456
DG
2595=item Invalid version format (%s)
2596
fa816bf3 2597(F) A version number did not meet the "lax" criteria for versions.
2c86d456
DG
2598A "lax" version number is a positive decimal number (integer or
2599decimal-fraction) without exponentiation or else a dotted-decimal
fa816bf3
FC
2600v-string. If the v-string has fewer than three components, it
2601must have a leading 'v' character. Otherwise, the leading 'v' is
2602optional. Both decimal and dotted-decimal versions may have a
2603trailing "alpha" component separated by an underscore character
2604after a fractional or dotted-decimal component. The parenthesized
2605text indicates which criteria were not met. See the L<version> module
2606for more details on allowed version formats.
46314c13 2607
798ae1b7
DG
2608=item Invalid version object
2609
fa816bf3
FC
2610(F) The internal structure of the version object was invalid.
2611Perhaps the internals were modified directly in some way or
2612an arbitrary reference was blessed into the "version" class.
798ae1b7 2613
675fa9ff
FC
2614=item In '(*VERB...)', splitting the initial '(*' is deprecated in regex; marked by <-- HERE in m/%s/
2615
2616(D regexp, deprecated) The two-character sequence C<"(*"> in
2617this context in a regular expression pattern should be an
2618indivisible token, with nothing intervening between the C<"(">
f26c79ba 2619and the C<"*">, but you separated them. Due to an accident of
675fa9ff
FC
2620implementation, this prohibition was not enforced, but we do
2621plan to forbid it in a future Perl version. This message
2622serves as giving you fair warning of this pending change.
2623
a0d0e21e
LW
2624=item ioctl is not implemented
2625
2626(F) Your machine apparently doesn't implement ioctl(), which is pretty
2627strange for a machine that supports C.
2628
c289d2f7
JH
2629=item ioctl() on unopened %s
2630
2631(W unopened) You tried ioctl() on a filehandle that was never opened.
34b6fd5e 2632Check your control flow and number of arguments.
c289d2f7 2633
fe13d51d 2634=item IO layers (like '%s') unavailable
363c40c4
SB
2635
2636(F) Your Perl has not been configured to have PerlIO, and therefore
34b6fd5e 2637you cannot use IO layers. To have PerlIO, Perl must be configured
363c40c4
SB
2638with 'useperlio'.
2639
80cbd5ad
JH
2640=item IO::Socket::atmark not implemented on this architecture
2641
2642(F) Your machine doesn't implement the sockatmark() functionality,
34b6fd5e 2643neither as a system call nor an ioctl call (SIOCATMARK).
80cbd5ad 2644
4f650b80 2645=item $* is no longer supported
b4581f09 2646
4f650b80
NC
2647(D deprecated, syntax) The special variable C<$*>, deprecated in older
2648perls, has been removed as of 5.9.0 and is no longer supported. In
2649previous versions of perl the use of C<$*> enabled or disabled multi-line
2650matching within a string.
4fd19576
B
2651
2652Instead of using C<$*> you should use the C</m> (and maybe C</s>) regexp
6903afa2
FC
2653modifiers. You can enable C</m> for a lexical scope (even a whole file)
2654with C<use re '/m'>. (In older versions: when C<$*> was set to a true value
570dedd4 2655then all regular expressions behaved as if they were written using C</m>.)
b4581f09 2656
8ae1fe26
RGS
2657=item $# is no longer supported
2658
a58ac25e 2659(D deprecated, syntax) The special variable C<$#>, deprecated in older
6903afa2 2660perls, has been removed as of 5.9.3 and is no longer supported. You
a58ac25e 2661should use the printf/sprintf functions instead.
8ae1fe26 2662
ccf3535a 2663=item '%s' is not a code reference
6ad11d81 2664
6903afa2
FC
2665(W overload) The second (fourth, sixth, ...) argument of
2666overload::constant needs to be a code reference. Either
2667an anonymous subroutine, or a reference to a subroutine.
6ad11d81 2668
ccf3535a 2669=item '%s' is not an overloadable type
6ad11d81 2670
04a80ee0
RGS
2671(W overload) You tried to overload a constant type the overload package is
2672unaware of.
6ad11d81 2673
5a25739d
FC
2674=item -i used with no filenames on the command line, reading from STDIN
2675
2676(S inplace) The C<-i> option was passed on the command line, indicating
2677that the script is intended to edit files in place, but no files were
2678given. This is usually a mistake, since editing STDIN in place doesn't
2679make sense, and can be confusing because it can make perl look like
2680it is hanging when it is really just trying to read from STDIN. You
2681should either pass a filename to edit, or remove C<-i> from the command
2682line. See L<perlrun> for more details.
2683
aec0ef10 2684=item Junk on end of regexp in regex m/%s/
a0d0e21e
LW
2685
2686(P) The regular expression parser is confused.
2687
2688=item Label not found for "last %s"
2689
be771a83
GS
2690(F) You named a loop to break out of, but you're not currently in a loop
2691of that name, not even if you count where you were called from. See
2692L<perlfunc/last>.
a0d0e21e
LW
2693
2694=item Label not found for "next %s"
2695
2696(F) You named a loop to continue, but you're not currently in a loop of
2697that name, not even if you count where you were called from. See
2698L<perlfunc/last>.
2699
2700=item Label not found for "redo %s"
2701
2702(F) You named a loop to restart, but you're not currently in a loop of
2703that name, not even if you count where you were called from. See
2704L<perlfunc/last>.
2705
85ab1d1d 2706=item leaving effective %s failed
5ff3f7a4 2707
85ab1d1d 2708(F) While under the C<use filetest> pragma, switching the real and
5ff3f7a4
GS
2709effective uids or gids failed.
2710
49704364
WL
2711=item length/code after end of string in unpack
2712
d7f8936a 2713(F) While unpacking, the string buffer was already used up when an unpack
6903afa2
FC
2714length/code combination tried to obtain more data. This results in
2715an undefined value for the length. See L<perlfunc/pack>.
49704364 2716
25e26107 2717=item length() used on %s (did you mean "scalar(%s)"?)
e508c8a4 2718
0d46a4e7
FC
2719(W syntax) You used length() on either an array or a hash when you
2720probably wanted a count of the items.
e508c8a4
MH
2721
2722Array size can be obtained by doing:
2723
2724 scalar(@array);
2725
2726The number of items in a hash can be obtained by doing:
2727
2728 scalar(keys %hash);
2729
f0e67a1d
Z
2730=item Lexing code attempted to stuff non-Latin-1 character into Latin-1 input
2731
d4fe7078
RS
2732(F) An extension is attempting to insert text into the current parse
2733(using L<lex_stuff_pvn|perlapi/lex_stuff_pvn> or similar), but tried to insert a character that
2734couldn't be part of the current input. This is an inherent pitfall
2735of the stuffing mechanism, and one of the reasons to avoid it. Where
6903afa2 2736it is necessary to stuff, stuffing only plain ASCII is recommended.
f0e67a1d
Z
2737
2738=item Lexing code internal error (%s)
2739
2740(F) Lexing code supplied by an extension violated the lexer's API in a
2741detectable way.
2742
69282e91 2743=item listen() on closed socket %s
a0d0e21e 2744
be771a83
GS
2745(W closed) You tried to do a listen on a closed socket. Did you forget
2746to check the return value of your socket() call? See
2747L<perlfunc/listen>.
a0d0e21e 2748
6651ba0b
FC
2749=item List form of piped open not implemented
2750
2751(F) On some platforms, notably Windows, the three-or-more-arguments
2752form of C<open> does not support pipes, such as C<open($pipe, '|-', @args)>.
2753Use the two-argument C<open($pipe, '|prog arg1 arg2...')> form instead.
2754
bcd05b94 2755=item localtime(%f) too large
8b56d6ff 2756
e9200be3 2757(W overflow) You called C<localtime> with a number that was larger
fc003d4b 2758than it can reliably handle and C<localtime> probably returned the
6903afa2 2759wrong date. This warning is also triggered with NaN (the special
fc003d4b
MS
2760not-a-number value).
2761
bcd05b94 2762=item localtime(%f) too small
fc003d4b 2763
e9200be3 2764(W overflow) You called C<localtime> with a number that was smaller
fc003d4b 2765than it can reliably handle and C<localtime> probably returned the
e7a1a147 2766wrong date.
8b56d6ff 2767
58e23c8d 2768=item Lookbehind longer than %d not implemented in regex m/%s/
b45f050a
JF
2769
2770(F) There is currently a limit on the length of string which lookbehind can
6903afa2 2771handle. This restriction may be eased in a future release.
2e50fd82 2772
b88df990
NC
2773=item Lost precision when %s %f by 1
2774
e63e8a91
FC
2775(W imprecision) The value you attempted to increment or decrement by one
2776is too large for the underlying floating point representation to store
2777accurately, hence the target of C<++> or C<--> is unchanged. Perl issues this
2778warning because it has already switched from integers to floating point
2779when values are too large for integers, and now even floating point is
2780insufficient. You may wish to switch to using L<Math::BigInt> explicitly.
b88df990 2781
93fad930 2782=item lstat() on filehandle%s
2f7da168
RK
2783
2784(W io) You tried to do an lstat on a filehandle. What did you mean
2785by that? lstat() makes sense only on filenames. (Perl did a fstat()
2786instead on the filehandle.)
2787
345d70e3 2788=item lvalue attribute %s already-defined subroutine
bb3abb05 2789
345d70e3
FC
2790(W misc) Although L<attributes.pm|attributes> allows this, turning the lvalue
2791attribute on or off on a Perl subroutine that is already defined
2792does not always work properly. It may or may not do what you
2793want, depending on what code is inside the subroutine, with exact
2794details subject to change between Perl versions. Only do this
2795if you really know what you are doing.
bb3abb05 2796
885ef6f5
GG
2797=item lvalue attribute ignored after the subroutine has been defined
2798
345d70e3
FC
2799(W misc) Using the C<:lvalue> declarative syntax to make a Perl
2800subroutine an lvalue subroutine after it has been defined is
2801not permitted. To make the subroutine an lvalue subroutine,
2802add the lvalue attribute to the definition, or put the C<sub
2803foo :lvalue;> declaration before the definition.
2804
2805See also L<attributes.pm|attributes>.
885ef6f5 2806
2db62bbc 2807=item Malformed integer in [] in pack
49704364 2808
2db62bbc 2809(F) Between the brackets enclosing a numeric repeat count only digits
49704364
WL
2810are permitted. See L<perlfunc/pack>.
2811
2812=item Malformed integer in [] in unpack
2813
2db62bbc 2814(F) Between the brackets enclosing a numeric repeat count only digits
49704364
WL
2815are permitted. See L<perlfunc/pack>.
2816
6df41af2
GS
2817=item Malformed PERLLIB_PREFIX
2818
2819(F) An error peculiar to OS/2. PERLLIB_PREFIX should be of the form
2820
2821 prefix1;prefix2
2822
2823or
6df41af2
GS
2824 prefix1 prefix2
2825
be771a83
GS
2826with nonempty prefix1 and prefix2. If C<prefix1> is indeed a prefix of
2827a builtin library search path, prefix2 is substituted. The error may
2828appear if components are not found, or are too long. See
fecfaeb8 2829"PERLLIB_PREFIX" in L<perlos2>.
6df41af2 2830
2f758a16
ST
2831=item Malformed prototype for %s: %s
2832
d37a9538
ST
2833(F) You tried to use a function with a malformed prototype. The
2834syntax of function prototypes is given a brief compile-time check for
2835obvious errors like invalid characters. A more rigorous check is run
2836when the function is called.
2f758a16 2837
ba210ebe
JH
2838=item Malformed UTF-8 character (%s)
2839
4d6f11e5 2840(S utf8)(F) Perl detected a string that didn't comply with UTF-8
2575c402 2841encoding rules, even though it had the UTF8 flag on.
ba210ebe 2842
2575c402
JW
2843One possible cause is that you set the UTF8 flag yourself for data that
2844you thought to be in UTF-8 but it wasn't (it was for example legacy
6903afa2 28458-bit data). To guard against this, you can use Encode::decode_utf8.
2575c402
JW
2846
2847If you use the C<:encoding(UTF-8)> PerlIO layer for input, invalid byte
2848sequences are handled gracefully, but if you use C<:utf8>, the flag is
2849set without validating the data, possibly resulting in this error
2850message.
2851
2852See also L<Encode/"Handling Malformed Data">.
901b21bf 2853
107160e2
KW
2854=item Malformed UTF-8 character immediately after '%s'
2855
2856(F) You said C<use utf8>, but the program file doesn't comply with UTF-8
2857encoding rules. The message prints out the properly encoded characters
2858just before the first bad one. If C<utf8> warnings are enabled, a
2859warning is generated that gives more details about the type of
2860malformation.
2861
bde9e88d 2862=item Malformed UTF-8 returned by \N{%s} immediately after '%s'
ff3f963a
KW
2863
2864(F) The charnames handler returned malformed UTF-8.
2865
4a5d3a93
FC
2866=item Malformed UTF-8 string in '%c' format in unpack
2867
2868(F) You tried to unpack something that didn't comply with UTF-8 encoding
2869rules and perl was unable to guess how to make more progress.
2870
f337b084
TH
2871=item Malformed UTF-8 string in pack
2872
2873(F) You tried to pack something that didn't comply with UTF-8 encoding
2874rules and perl was unable to guess how to make more progress.
2875
2876=item Malformed UTF-8 string in unpack
2877
2878(F) You tried to unpack something that didn't comply with UTF-8 encoding
2879rules and perl was unable to guess how to make more progress.
2880
4a5d3a93 2881=item Malformed UTF-16 surrogate
f337b084 2882
4a5d3a93
FC
2883(F) Perl thought it was reading UTF-16 encoded character data but while
2884doing it Perl met a malformed Unicode surrogate.
2885
2886=item %s matches null string many times in regex; marked by <-- HERE in m/%s/
2887
2888(W regexp) The pattern you've specified would be an infinite loop if the
2889regular expression engine didn't specifically check for that. The <-- HERE
9e3ec65c 2890shows whereabouts in the regular expression the problem was discovered.
4a5d3a93 2891See L<perlre>.
f337b084 2892
de42a5a9 2893=item Maximal count of pending signals (%u) exceeded
2563cec5 2894
6903afa2 2895(F) Perl aborted due to too high a number of signals pending. This
2563cec5
IZ
2896usually indicates that your operating system tried to deliver signals
2897too fast (with a very high priority), starving the perl process from
2898resources it would need to reach a point where it can process signals
6903afa2 2899safely. (See L<perlipc/"Deferred Signals (Safe Signals)">.)
2563cec5 2900
25f58aea
PN
2901=item "%s" may clash with future reserved word
2902
2903(W) This warning may be due to running a perl5 script through a perl4
2904interpreter, especially if the word that is being warned about is
2905"use" or "my".
2906
0d2487cd 2907=item '%' may not be used in pack
6df41af2
GS
2908
2909(F) You can't pack a string by supplying a checksum, because the
be771a83
GS
2910checksumming process loses information, and you can't go the other way.
2911See L<perlfunc/unpack>.
6df41af2 2912
a0d0e21e
LW
2913=item Method for operation %s not found in package %s during blessing
2914
2915(F) An attempt was made to specify an entry in an overloading table that
e7ea3e70 2916doesn't resolve to a valid subroutine. See L<overload>.
a0d0e21e 2917
3cdd684c
TP
2918=item Method %s not permitted
2919
2920See Server error.
2921
a0d0e21e
LW
2922=item Might be a runaway multi-line %s string starting on line %d
2923
2924(S) An advisory indicating that the previous error may have been caused
2925by a missing delimiter on a string or pattern, because it eventually
2926ended earlier on the current line.
2927
2928=item Misplaced _ in number
2929
d4ced10d
JH
2930(W syntax) An underscore (underbar) in a numeric constant did not
2931separate two digits.
a0d0e21e 2932
7baa4690
HS
2933=item Missing argument in %s
2934
2935(W uninitialized) A printf-type format required more arguments than were
2936supplied.
2937
9e81e6a1
RGS
2938=item Missing argument to -%c
2939
2940(F) The argument to the indicated command line switch must follow
2941immediately after the switch, without intervening spaces.
2942
ff3f963a 2943=item Missing braces on \N{}
423cee85 2944
aec0ef10
FC
2945=item Missing braces on \N{} in regex; marked by <-- HERE in m/%s/
2946
4a2d328f 2947(F) Wrong syntax of character name literal C<\N{charname}> within
532cb70d
FC
2948double-quotish context. This can also happen when there is a space
2949(or comment) between the C<\N> and the C<{> in a regex with the C</x> modifier.
2950This modifier does not change the requirement that the brace immediately
2951follow the C<\N>.
423cee85 2952
f0a2b745
KW
2953=item Missing braces on \o{}
2954
2955(F) A C<\o> must be followed immediately by a C<{> in double-quotish context.
2956
a0d0e21e
LW
2957=item Missing comma after first argument to %s function
2958
2959(F) While certain functions allow you to specify a filehandle or an
2960"indirect object" before the argument list, this ain't one of them.
2961
06eaf0bc
GS
2962=item Missing command in piped open
2963
be771a83
GS
2964(W pipe) You used the C<open(FH, "| command")> or
2965C<open(FH, "command |")> construction, but the command was missing or
2966blank.
06eaf0bc 2967
961ce445
RGS
2968=item Missing control char name in \c
2969
2970(F) A double-quoted string ended with "\c", without the required control
2971character name.
2972
8767b1ab 2973=item Missing name in "%s sub"
6df41af2 2974
be771a83
GS
2975(F) The reserved syntax for lexically scoped subroutines requires that
2976they have a name with which they can be found.
6df41af2
GS
2977
2978=item Missing $ on loop variable
2979
be771a83
GS
2980(F) Apparently you've been programming in B<csh> too much. Variables
2981are always mentioned with the $ in Perl, unlike in the shells, where it
2982can vary from one line to the next.
6df41af2 2983
50278ed0
PM
2984=item Missing ']' in prototype for %s : %s
2985
2986(W illegalproto) A grouping was started with C<[> but never closed with
2987C<]>.
2988
cc507455 2989=item (Missing operator before %s?)
748a9306 2990
56da5a46
RGS
2991(S syntax) This is an educated guess made in conjunction with the message
2992"%s found where operator expected". Often the missing operator is a comma.
748a9306 2993
aec0ef10 2994=item Missing right brace on \%c{} in regex; marked by <-- HERE in m/%s/
ab13f0c7 2995
ff3f963a
KW
2996(F) Missing right brace in C<\x{...}>, C<\p{...}>, C<\P{...}>, or C<\N{...}>.
2997
4a68bf9d 2998=item Missing right brace on \N{} or unescaped left brace after \N
ff3f963a 2999
d32207c9
FC
3000(F) C<\N> has two meanings.
3001
3002The traditional one has it followed by a name enclosed in braces,
3003meaning the character (or sequence of characters) given by that
fa816bf3 3004name. Thus C<\N{ASTERISK}> is another way of writing C<*>, valid in both
d32207c9
FC
3005double-quoted strings and regular expression patterns. In patterns,
3006it doesn't have the meaning an unescaped C<*> does.
3007
3008Starting in Perl 5.12.0, C<\N> also can have an additional meaning (only)
3009in patterns, namely to match a non-newline character. (This is short
3010for C<[^\n]>, and like C<.> but is not affected by the C</s> regex modifier.)
3011
3012This can lead to some ambiguities. When C<\N> is not followed immediately
3013by a left brace, Perl assumes the C<[^\n]> meaning. Also, if the braces
3014form a valid quantifier such as C<\N{3}> or C<\N{5,}>, Perl assumes that this
3015means to match the given quantity of non-newlines (in these examples,
30163; and 5 or more, respectively). In all other case, where there is a
3017C<\N{> and a matching C<}>, Perl assumes that a character name is desired.
3018
3019However, if there is no matching C<}>, Perl doesn't know if it was
3020mistakenly omitted, or if C<[^\n]{> was desired, and raises this error.
3021If you meant the former, add the right brace; if you meant the latter,
3022escape the brace with a backslash, like so: C<\N\{>
ab13f0c7 3023
d98d5fff 3024=item Missing right curly or square bracket
a0d0e21e 3025
be771a83
GS
3026(F) The lexer counted more opening curly or square brackets than closing
3027ones. As a general rule, you'll find it's missing near the place you
3028were last editing.
a0d0e21e 3029
6df41af2
GS
3030=item (Missing semicolon on previous line?)
3031
56da5a46
RGS
3032(S syntax) This is an educated guess made in conjunction with the message
3033"%s found where operator expected". Don't automatically put a semicolon on
6df41af2
GS
3034the previous line just because you saw this message.
3035
a0d0e21e
LW
3036=item Modification of a read-only value attempted
3037
3038(F) You tried, directly or indirectly, to change the value of a
5f05dabc 3039constant. You didn't, of course, try "2 = 1", because the compiler
a0d0e21e
LW
3040catches that. But an easy way to do the same thing is:
3041
3042 sub mod { $_[0] = 1 }
3043 mod(2);
3044
3045Another way is to assign to a substr() that's off the end of the string.
3046
c5674021
PDF
3047Yet another way is to assign to a C<foreach> loop I<VAR> when I<VAR>
3048is aliased to a constant in the look I<LIST>:
3049
b7e4ecc1
FC
3050 $x = 1;
3051 foreach my $n ($x, 2) {
3052 $n *= 2; # modifies the $x, but fails on attempt to
3053 } # modify the 2
c5674021 3054
7a4340ed 3055=item Modification of non-creatable array value attempted, %s
a0d0e21e
LW
3056
3057(F) You tried to make an array value spring into existence, and the
3058subscript was probably negative, even counting from end of the array
3059backwards.
3060
7a4340ed 3061=item Modification of non-creatable hash value attempted, %s
a0d0e21e 3062
be771a83
GS
3063(P) You tried to make a hash value spring into existence, and it
3064couldn't be created for some peculiar reason.
a0d0e21e
LW
3065
3066=item Module name must be constant
3067
3068(F) Only a bare module name is allowed as the first argument to a "use".
3069
be98fb35 3070=item Module name required with -%c option
6df41af2 3071
be98fb35
GS
3072(F) The C<-M> or C<-m> options say that Perl should load some module, but
3073you omitted the name of the module. Consult L<perlrun> for full details
3074about C<-M> and C<-m>.
6df41af2 3075
fe13d51d 3076=item More than one argument to '%s' open
ed9aa3b7 3077
6903afa2 3078(F) The C<open> function has been asked to open multiple files. This
ed9aa3b7
SG
3079can happen if you are trying to open a pipe to a command that takes a
3080list of arguments, but have forgotten to specify a piped open mode.
3081See L<perlfunc/open> for details.
3082
92951bce
FC
3083=item mprotect for %p %u failed with %d
3084
3085=item mprotect RW for %p %u failed with %d
3086
3087(S) You compiled perl with B<-D>PERL_DEBUG_READONLY_OPS (see
3088L<perlhacktips>), but an op tree could not be made read-only, or a
3089read-only op tree could not be made mutable before freeing the ops.
3090
a0d0e21e
LW
3091=item msg%s not implemented
3092
3093(F) You don't have System V message IPC on your system.
3094
3095=item Multidimensional syntax %s not supported
3096
75b44862
GS
3097(W syntax) Multidimensional arrays aren't written like C<$foo[1,2,3]>.
3098They're written like C<$foo[1][2][3]>, as in C.
8b1a09fc 3099
49704364 3100=item '/' must follow a numeric type in unpack
6df41af2 3101
49704364
WL
3102(F) You had an unpack template that contained a '/', but this did not
3103follow some unpack specification producing a numeric value.
3104See L<perlfunc/pack>.
6df41af2
GS
3105
3106=item "my sub" not yet implemented
3107
be771a83
GS
3108(F) Lexically scoped subroutines are not yet implemented. Don't try
3109that yet.
6df41af2 3110
5a25739d
FC
3111=item "my %s" used in sort comparison
3112
3113(W syntax) The package variables $a and $b are used for sort comparisons.
3114You used $a or $b in as an operand to the C<< <=> >> or C<cmp> operator inside a
3115sort comparison block, and the variable had earlier been declared as a
3116lexical variable. Either qualify the sort variable with the package
3117name, or rename the lexical variable.
3118
fd1b7234 3119=item "my" variable %s can't be in a package
6df41af2 3120
be771a83
GS
3121(F) Lexically scoped variables aren't in a package, so it doesn't make
3122sense to try to declare one with a package qualifier on the front. Use
3123local() if you want to localize a package variable.
09bef843 3124
8149aa9f
FC
3125=item Name "%s::%s" used only once: possible typo
3126
3127(W once) Typographical errors often show up as unique variable names.
3128If you had a good reason for having a unique name, then just mention it
db20b640
FC
3129again somehow to suppress the message. The C<our> declaration is provided
3130for this purpose.
8149aa9f
FC
3131
3132NOTE: This warning detects symbols that have been used only once so $c, @c,
3133%c, *c, &c, sub c{}, c(), and c (the filehandle or format) are considered
3134the same; if a program uses $c only once but also uses any of the others it
9ec237a1
RS
3135will not trigger this warning. Symbols beginning with an underscore and
3136symbols using special identifiers (q.v. L<perldata>) are exempt from this
3137warning.
8149aa9f 3138
0d0b4b3b
KW
3139=item Need exactly 3 octal digits in regex; marked by <-- HERE in m/%s/
3140
3141(F) Within S<C<(?[ ])>>, all constants interpreted as octal need to be
3142exactly 3 digits long. This helps catch some ambiguities. If your
3143constant is too short, add leading zeros, like
3144
3145 (?[ [ \078 ] ]) # Syntax error!
3146 (?[ [ \0078 ] ]) # Works
3147 (?[ [ \007 8 ] ]) # Clearer
3148
3149The maximum number this construct can express is C<\777>. If you
675fa9ff
FC
3150need a larger one, you need to use L<\o{}|perlrebackslash/Octal escapes> instead. If you meant
3151two separate things, you need to separate them:
0d0b4b3b
KW
3152
3153 (?[ [ \7776 ] ]) # Syntax error!
3154 (?[ [ \o{7776} ] ]) # One meaning
3155 (?[ [ \777 6 ] ]) # Another meaning
3156 (?[ [ \777 \006 ] ]) # Still another
3157
49704364
WL
3158=item Negative '/' count in unpack
3159
3160(F) The length count obtained from a length/code unpack operation was
3161negative. See L<perlfunc/pack>.
3162
a0d0e21e
LW
3163=item Negative length
3164
be771a83
GS
3165(F) You tried to do a read/write/send/recv operation with a buffer
3166length that is less than 0. This is difficult to imagine.
a0d0e21e 3167
ed9aa3b7
SG
3168=item Negative offset to vec in lvalue context
3169
3170(F) When C<vec> is called in an lvalue context, the second argument must be
3171greater than or equal to zero.
3172
7253e4e3 3173=item Nested quantifiers in regex; marked by <-- HERE in m/%s/
a0d0e21e 3174
6903afa2 3175(F) You can't quantify a quantifier without intervening parentheses.
9e3ec65c
FC
3176So things like ** or +* or ?* are illegal. The <-- HERE shows
3177whereabouts in the regular expression the problem was discovered.
a0d0e21e 3178
7253e4e3 3179Note that the minimal matching quantifiers, C<*?>, C<+?>, and
be771a83 3180C<??> appear to be nested quantifiers, but aren't. See L<perlre>.
a0d0e21e 3181
6df41af2 3182=item %s never introduced
a0d0e21e 3183
be771a83
GS
3184(S internal) The symbol in question was declared but somehow went out of
3185scope before it could possibly have been used.
a0d0e21e 3186
2c7d6b9c
RGS
3187=item next::method/next::can/maybe::next::method cannot find enclosing method
3188
3189(F) C<next::method> needs to be called within the context of a
3190real method in a real package, and it could not find such a context.
3191See L<mro>.
3192
5a25739d
FC
3193=item \N in a character class must be a named character: \N{...} in regex;
3194marked by <-- HERE in m/%s/
3195
3196(F) The new (5.12) meaning of C<\N> as C<[^\n]> is not valid in
3197a bracketed character class, for the same reason that C<.> in
3198a character class loses its specialness: it matches almost
3199everything, which is probably not what you want.
3200
3201=item \N{NAME} must be resolved by the lexer in regex; marked by <-- HERE in m/%s/
3202
3203(F) When compiling a regex pattern, an unresolved named character or
3204sequence was encountered. This can happen in any of several ways that
3205bypass the lexer, such as using single-quotish context, or an extra
3206backslash in double-quotish:
3207
3208 $re = '\N{SPACE}'; # Wrong!
3209 $re = "\\N{SPACE}"; # Wrong!
3210 /$re/;
3211
3212Instead, use double-quotes with a single backslash:
3213
3214 $re = "\N{SPACE}"; # ok
3215 /$re/;
3216
3217The lexer can be bypassed as well by creating the pattern from smaller
3218components:
3219
3220 $re = '\N';
3221 /${re}{SPACE}/; # Wrong!
3222
3223It's not a good idea to split a construct in the middle like this, and
3224it doesn't work here. Instead use the solution above.
3225
3226Finally, the message also can happen under the C</x> regex modifier when the
3227C<\N> is separated by spaces from the C<{>, in which case, remove the spaces.
3228
3229 /\N {SPACE}/x; # Wrong!
3230 /\N{SPACE}/x; # ok
3231
a0d0e21e
LW
3232=item No %s allowed while running setuid
3233
be771a83
GS
3234(F) Certain operations are deemed to be too insecure for a setuid or
3235setgid script to even be allowed to attempt. Generally speaking there
3236will be another way to do what you want that is, if not secure, at least
3237securable. See L<perlsec>.
a0d0e21e 3238
6651ba0b
FC
3239=item No code specified for -%c
3240
3241(F) Perl's B<-e> and B<-E> command-line options require an argument. If
3242you want to run an empty program, pass the empty string as a separate
3243argument or run a program consisting of a single 0 or 1:
3244
3245 perl -e ""
3246 perl -e0
3247 perl -e1
3248
a0d0e21e
LW
3249=item No comma allowed after %s
3250
6903afa2
FC
3251(F) A list operator that has a filehandle or "indirect object" is
3252not allowed to have a comma between that and the following arguments.
a0d0e21e
LW
3253Otherwise it'd be just another one of the arguments.
3254
6903afa2
FC
3255One possible cause for this is that you expected to have imported
3256a constant to your name space with B<use> or B<import> while no such
3257importing took place, it may for example be that your operating
3258system does not support that particular constant. Hopefully you did
3259use an explicit import list for the constants you expect to see;
3260please see L<perlfunc/use> and L<perlfunc/import>. While an
3261explicit import list would probably have caught this error earlier
3262it naturally does not remedy the fact that your operating system
3263still does not support that constant. Maybe you have a typo in
3264the constants of the symbol import list of B<use> or B<import> or in the
3265constant name at the line where this error was triggered?
0a753a76 3266
748a9306
LW
3267=item No command into which to pipe on command line
3268
be771a83
GS
3269(F) An error peculiar to VMS. Perl handles its own command line
3270redirection, and found a '|' at the end of the command line, so it
3271doesn't know where you want to pipe the output from this command.
748a9306 3272
a0d0e21e
LW
3273=item No DB::DB routine defined
3274
be771a83 3275(F) The currently executing code was compiled with the B<-d> switch, but
f7af5ce1 3276for some reason the current debugger (e.g. F<perl5db.pl> or a C<Devel::>
ccafdc96
RGS
3277module) didn't define a routine to be called at the beginning of each
3278statement.
a0d0e21e
LW
3279
3280=item No dbm on this machine
3281
3282(P) This is counted as an internal error, because every machine should
5f05dabc 3283supply dbm nowadays, because Perl comes with SDBM. See L<SDBM_File>.
a0d0e21e 3284
ccafdc96 3285=item No DB::sub routine defined
a0d0e21e 3286
ccafdc96
RGS
3287(F) The currently executing code was compiled with the B<-d> switch, but
3288for some reason the current debugger (e.g. F<perl5db.pl> or a C<Devel::>
3289module) didn't define a C<DB::sub> routine to be called at the beginning
3290of each ordinary subroutine call.
a0d0e21e 3291
6651ba0b
FC
3292=item No directory specified for -I
3293
3294(F) The B<-I> command-line switch requires a directory name as part of the
3295I<same> argument. Use B<-Ilib>, for instance. B<-I lib> won't work.
3296
c47ff5f1 3297=item No error file after 2> or 2>> on command line
748a9306 3298
be771a83
GS
3299(F) An error peculiar to VMS. Perl handles its own command line
3300redirection, and found a '2>' or a '2>>' on the command line, but can't
3301find the name of the file to which to write data destined for stderr.
748a9306 3302
49704364
WL
3303=item No group ending character '%c' found in template
3304
3305(F) A pack or unpack template has an opening '(' or '[' without its
6903afa2 3306matching counterpart. See L<perlfunc/pack>.
49704364 3307
c47ff5f1 3308=item No input file after < on command line
748a9306 3309
be771a83
GS
3310(F) An error peculiar to VMS. Perl handles its own command line
3311redirection, and found a '<' on the command line, but can't find the
3312name of the file from which to read data for stdin.
748a9306 3313
2c7d6b9c
RGS
3314=item No next::method '%s' found for %s
3315
3316(F) C<next::method> found no further instances of this method name
3317in the remaining packages of the MRO of this class. If you don't want
3318it throwing an exception, use C<maybe::next::method>
fa816bf3 3319or C<next::can>. See L<mro>.
2c7d6b9c 3320
675fa9ff
FC
3321=item Non-hex character in regex; marked by <-- HERE in m/%s/
3322
3323(F) In a regular expression, there was a non-hexadecimal character where
3324a hex one was expected, like
3325
3326 (?[ [ \xDG ] ])
3327 (?[ [ \x{DEKA} ] ])
3328
3329=item Non-octal character in regex; marked by <-- HERE in m/%s/
3330
3331(F) In a regular expression, there was a non-octal character where
3332an octal one was expected, like
3333
3334 (?[ [ \o{1278} ] ])
3335
3336=item Non-octal character '%c'. Resolved as "%s"
3337
3338(W digit) In parsing an octal numeric constant, a character was
3339unexpectedly encountered that isn't octal. The resulting value
3340is as indicated.
3341
6df41af2
GS
3342=item "no" not allowed in expression
3343
be771a83
GS
3344(F) The "no" keyword is recognized and executed at compile time, and
3345returns no useful value. See L<perlmod>.
6df41af2 3346
675fa9ff
FC
3347=item Non-string passed as bitmask
3348
3349(W misc) A number has been passed as a bitmask argument to select().
3350Use the vec() function to construct the file descriptor bitmasks for
3351select. See L<perlfunc/select>.
3352
c47ff5f1 3353=item No output file after > on command line
748a9306 3354
be771a83
GS
3355(F) An error peculiar to VMS. Perl handles its own command line
3356redirection, and found a lone '>' at the end of the command line, so it
3357doesn't know where you wanted to redirect stdout.
748a9306 3358
c47ff5f1 3359=item No output file after > or >> on command line
748a9306 3360
be771a83
GS
3361(F) An error peculiar to VMS. Perl handles its own command line
3362redirection, and found a '>' or a '>>' on the command line, but can't
3363find the name of the file to which to write data destined for stdout.
748a9306 3364
1ec3e8de
GS
3365=item No package name allowed for variable %s in "our"
3366
be771a83
GS
3367(F) Fully qualified variable names are not allowed in "our"
3368declarations, because that doesn't make much sense under existing
3369semantics. Such syntax is reserved for future extensions.
1ec3e8de 3370
a0d0e21e
LW
3371=item No Perl script found in input
3372
3373(F) You called C<perl -x>, but no line was found in the file beginning
3374with #! and containing the word "perl".
3375
3376=item No setregid available
3377
3378(F) Configure didn't find anything resembling the setregid() call for
3379your system.
3380
3381=item No setreuid available
3382
3383(F) Configure didn't find anything resembling the setreuid() call for
3384your system.
3385
5a25739d
FC
3386=item No such class %s
3387
3388(F) You provided a class qualifier in a "my", "our" or "state"
3389declaration, but this class doesn't exist at this point in your program.
3390
e75d1f10
RD
3391=item No such class field "%s" in variable %s of type %s
3392
b7e4ecc1
FC
3393(F) You tried to access a key from a hash through the indicated typed
3394variable but that key is not allowed by the package of the same type.
3395The indicated package has restricted the set of allowed keys using the
3396L<fields> pragma.
e75d1f10 3397
3c20a832
SP
3398=item No such hook: %s
3399
dc7e5945
FC
3400(F) You specified a signal hook that was not recognized by Perl.
3401Currently, Perl accepts C<__DIE__> and C<__WARN__> as valid signal hooks.
3c20a832 3402
6df41af2
GS
3403=item No such pipe open
3404
3405(P) An error peculiar to VMS. The internal routine my_pclose() tried to
be771a83
GS
3406close a pipe which hadn't been opened. This should have been caught
3407earlier as an attempt to close an unopened filehandle.
6df41af2 3408
a0d0e21e
LW
3409=item No such signal: SIG%s
3410
be771a83
GS
3411(W signal) You specified a signal name as a subscript to %SIG that was
3412not recognized. Say C<kill -l> in your shell to see the valid signal
3413names on your system.
a0d0e21e
LW
3414
3415=item Not a CODE reference
3416
3417(F) Perl was trying to evaluate a reference to a code value (that is, a
3418subroutine), but found a reference to something else instead. You can
be771a83
GS
3419use the ref() function to find out what kind of ref it really was. See
3420also L<perlref>.
a0d0e21e 3421
a0d0e21e
LW
3422=item Not a GLOB reference
3423
be771a83
GS
3424(F) Perl was trying to evaluate a reference to a "typeglob" (that is, a
3425symbol table entry that looks like C<*foo>), but found a reference to
3426something else instead. You can use the ref() function to find out what
3427kind of ref it really was. See L<perlref>.
a0d0e21e
LW
3428
3429=item Not a HASH reference
3430
be771a83
GS
3431(F) Perl was trying to evaluate a reference to a hash value, but found a
3432reference to something else instead. You can use the ref() function to
3433find out what kind of ref it really was. See L<perlref>.
a0d0e21e 3434
6df41af2
GS
3435=item Not an ARRAY reference
3436
be771a83
GS
3437(F) Perl was trying to evaluate a reference to an array value, but found
3438a reference to something else instead. You can use the ref() function
3439to find out what kind of ref it really was. See L<perlref>.
6df41af2 3440
d4fc4415
FC
3441=item Not an unblessed ARRAY reference
3442
3443(F) You passed a reference to a blessed array to C<push>, C<shift> or
3444another array function. These only accept unblessed array references
3445or arrays beginning explicitly with C<@>.
3446
a0d0e21e
LW
3447=item Not a SCALAR reference
3448
be771a83
GS
3449(F) Perl was trying to evaluate a reference to a scalar value, but found
3450a reference to something else instead. You can use the ref() function
3451to find out what kind of ref it really was. See L<perlref>.
a0d0e21e
LW
3452
3453=item Not a subroutine reference
3454
3455(F) Perl was trying to evaluate a reference to a code value (that is, a
3456subroutine), but found a reference to something else instead. You can
be771a83
GS
3457use the ref() function to find out what kind of ref it really was. See
3458also L<perlref>.
a0d0e21e 3459
e7ea3e70 3460=item Not a subroutine reference in overload table
a0d0e21e
LW
3461
3462(F) An attempt was made to specify an entry in an overloading table that
8b1a09fc 3463doesn't somehow point to a valid subroutine. See L<overload>.
a0d0e21e 3464
a0d0e21e
LW
3465=item Not enough arguments for %s
3466
3467(F) The function requires more arguments than you specified.
3468
6df41af2
GS
3469=item Not enough format arguments
3470
be771a83
GS
3471(W syntax) A format specified more picture fields than the next line
3472supplied. See L<perlform>.
6df41af2
GS
3473
3474=item %s: not found
3475
be771a83
GS
3476(A) You've accidentally run your script through the Bourne shell instead
3477of Perl. Check the #! line, or manually feed your script into Perl
3478yourself.
6df41af2 3479
675fa9ff
FC
3480=item (?[...]) not valid in locale in regex; marked by <-- HERE in m/%s/
3481
3482(F) C<(?[...])> cannot be used within the scope of a C<S<use locale>> or with
3483an C</l> regular expression modifier, as that would require deferring
3484to run-time the calculation of what it should evaluate to, and it is
3485regex compile-time only.
3486
6df41af2 3487=item no UTC offset information; assuming local time is UTC
a0d0e21e 3488
6df41af2
GS
3489(S) A warning peculiar to VMS. Perl was unable to find the local
3490timezone offset, so it's assuming that local system time is equivalent
be771a83
GS
3491to UTC. If it's not, define the logical name
3492F<SYS$TIMEZONE_DIFFERENTIAL> to translate to the number of seconds which
3493need to be added to UTC to get local time.
a0d0e21e
LW
3494
3495=item Null filename used
3496
be771a83
GS
3497(F) You can't require the null filename, especially because on many
3498machines that means the current directory! See L<perlfunc/require>.
a0d0e21e 3499
6df41af2
GS
3500=item NULL OP IN RUN
3501
f84fe999 3502(S debugging) Some internal routine called run() with a null opcode
be771a83 3503pointer.
6df41af2 3504
55497cff 3505=item Null picture in formline
3506
3507(F) The first argument to formline must be a valid format picture
3508specification. It was found to be empty, which probably means you
3509supplied it an uninitialized value. See L<perlform>.
3510
a0d0e21e
LW
3511=item Null realloc
3512
3513(P) An attempt was made to realloc NULL.
3514
3515=item NULL regexp argument
3516
5f05dabc 3517(P) The internal pattern matching routines blew it big time.
a0d0e21e
LW
3518
3519=item NULL regexp parameter
3520
3521(P) The internal pattern matching routines are out of their gourd.
3522
fc36a67e 3523=item Number too long
3524
be771a83 3525(F) Perl limits the representation of decimal numbers in programs to
da75cd15 3526about 250 characters. You've exceeded that length. Future
be771a83
GS
3527versions of Perl are likely to eliminate this arbitrary limitation. In
3528the meantime, try using scientific notation (e.g. "1e6" instead of
3529"1_000_000").
fc36a67e 3530
f0a2b745
KW
3531=item Number with no digits
3532
1043934d 3533(F) Perl was looking for a number but found nothing that looked like
6903afa2 3534a number. This happens, for example with C<\o{}>, with no number between
1043934d 3535the braces.
f0a2b745 3536
252aa082
JH
3537=item Octal number > 037777777777 non-portable
3538
75b44862 3539(W portable) The octal number you specified is larger than 2**32-1
be771a83
GS
3540(4294967295) and therefore non-portable between systems. See
3541L<perlport> for more on portability concerns.
252aa082 3542
6ad11d81
JH
3543=item Odd number of arguments for overload::constant
3544
04a80ee0 3545(W overload) The call to overload::constant contained an odd number of
6903afa2 3546arguments. The arguments should come in pairs.
6ad11d81 3547
b21befc1
MG
3548=item Odd number of elements in anonymous hash
3549
3550(W misc) You specified an odd number of elements to initialize a hash,
3551which is odd, because hashes come in key/value pairs.
3552
1930e939 3553=item Odd number of elements in hash assignment
a0d0e21e 3554
be771a83
GS
3555(W misc) You specified an odd number of elements to initialize a hash,
3556which is odd, because hashes come in key/value pairs.
a0d0e21e 3557
bbce6d69 3558=item Offset outside string
3559
1fa582fa 3560(F)(W layer) You tried to do a read/write/send/recv/seek operation
42bc49da 3561with an offset pointing outside the buffer. This is difficult to
f5a7294f
JH
3562imagine. The sole exceptions to this are that zero padding will
3563take place when going past the end of the string when either
3564C<sysread()>ing a file, or when seeking past the end of a scalar opened
1a7a2554
MB
3565for I/O (in anticipation of future reads and to imitate the behaviour
3566with real files).
bbce6d69 3567
c289d2f7 3568=item %s() on unopened %s
2dd78f96
JH
3569
3570(W unopened) An I/O operation was attempted on a filehandle that was
3571never initialized. You need to do an open(), a sysopen(), or a socket()
3572call, or call a constructor from the FileHandle package.
3573
96ebfdd7
RK
3574=item -%s on unopened filehandle %s
3575
3576(W unopened) You tried to invoke a file test operator on a filehandle
3577that isn't open. Check your control flow. See also L<perlfunc/-X>.
3578
a0d0e21e
LW
3579=item oops: oopsAV
3580
e476b1b5 3581(S internal) An internal warning that the grammar is screwed up.
a0d0e21e
LW
3582
3583=item oops: oopsHV
3584
e476b1b5 3585(S internal) An internal warning that the grammar is screwed up.
a0d0e21e 3586
abc718f2
RGS
3587=item Opening dirhandle %s also as a file
3588
713e2616 3589(D io, deprecated) You used open() to associate a filehandle to
abc718f2
RGS
3590a symbol (glob or scalar) that already holds a dirhandle.
3591Although legal, this idiom might render your code confusing
3592and is deprecated.
3593
3594=item Opening filehandle %s also as a directory
3595
28038637 3596(D io, deprecated) You used opendir() to associate a dirhandle to
abc718f2
RGS
3597a symbol (glob or scalar) that already holds a filehandle.
3598Although legal, this idiom might render your code confusing
3599and is deprecated.
3600
0d0b4b3b
KW
3601=item Operand with no preceding operator in regex; marked by <-- HERE in m/%s/
3602
675fa9ff 3603(F) You wrote something like
0d0b4b3b
KW
3604
3605 (?[ \p{Digit} \p{Thai} ])
3606
3607There are two operands, but no operator giving how you want to combine
3608them.
3609
a0288114 3610=item Operation "%s": no method found, %s
44a8e56a 3611
be771a83
GS
3612(F) An attempt was made to perform an overloaded operation for which no
3613handler was defined. While some handlers can be autogenerated in terms
3614of other handlers, there is no default handler for any operation, unless
e4aad80d 3615the C<fallback> overloading key is specified to be true. See L<overload>.
44a8e56a 3616
5ff1373f 3617=item Operation "%s" returns its argument for non-Unicode code point 0x%X
9ae3ac1a 3618
3fc8aa03 3619(S utf8, non_unicode) You performed an operation requiring Unicode
73c4e9dc
FC
3620semantics on a code point that is not in Unicode, so what it should do
3621is not defined. Perl has chosen to have it do nothing, and warn you.
9ae3ac1a
KW
3622
3623If the operation shown is "ToFold", it means that case-insensitive
3624matching in a regular expression was done on the code point.
3625
3626If you know what you are doing you can turn off this warning by
8457b38f 3627C<no warnings 'non_unicode';>.
9ae3ac1a 3628
5ff1373f 3629=item Operation "%s" returns its argument for UTF-16 surrogate U+%X
9ae3ac1a 3630
3fc8aa03 3631(S utf8, surrogate) You performed an operation requiring Unicode
73c4e9dc
FC
3632semantics on a Unicode surrogate. Unicode frowns upon the use of
3633surrogates for anything but storing strings in UTF-16, but semantics
3634are (reluctantly) defined for the surrogates, and they are to do
3635nothing for this operation. Because the use of surrogates can be
3636dangerous, Perl warns.
9ae3ac1a
KW
3637
3638If the operation shown is "ToFold", it means that case-insensitive
3639matching in a regular expression was done on the code point.
3640
3641If you know what you are doing you can turn off this warning by
8457b38f 3642C<no warnings 'surrogate';>.
9ae3ac1a 3643
748a9306
LW
3644=item Operator or semicolon missing before %s
3645
be771a83
GS
3646(S ambiguous) You used a variable or subroutine call where the parser
3647was expecting an operator. The parser has assumed you really meant to
3648use an operator, but this is highly likely to be incorrect. For
3649example, if you say "*foo *foo" it will be interpreted as if you said
3650"*foo * 'foo'".
748a9306 3651
6df41af2
GS
3652=item "our" variable %s redeclared
3653
be771a83
GS
3654(W misc) You seem to have already declared the same global once before
3655in the current lexical scope.
6df41af2 3656
a80b8354
GS
3657=item Out of memory!
3658
3659(X) The malloc() function returned 0, indicating there was insufficient
be771a83
GS
3660remaining memory (or virtual memory) to satisfy the request. Perl has
3661no option but to exit immediately.
a80b8354 3662
19a52907
JH
3663At least in Unix you may be able to get past this by increasing your
3664process datasize limits: in csh/tcsh use C<limit> and
3665C<limit datasize n> (where C<n> is the number of kilobytes) to check
3666the current limits and change them, and in ksh/bash/zsh use C<ulimit -a>
3667and C<ulimit -d n>, respectively.
3668
6d3b25aa
RGS
3669=item Out of memory during %s extend
3670
3671(X) An attempt was made to extend an array, a list, or a string beyond
3672the largest possible memory allocation.
3673
6df41af2 3674=item Out of memory during "large" request for %s
a0d0e21e 3675
6df41af2 3676(F) The malloc() function returned 0, indicating there was insufficient
6903afa2 3677remaining memory (or virtual memory) to satisfy the request. However,
be771a83
GS
3678the request was judged large enough (compile-time default is 64K), so a
3679possibility to shut down by trapping this error is granted.
a0d0e21e 3680
1b979e0a 3681=item Out of memory during request for %s
a0d0e21e 3682
1fa582fa 3683(X)(F) The malloc() function returned 0, indicating there was
be771a83
GS
3684insufficient remaining memory (or virtual memory) to satisfy the
3685request.
eff9c6e2
CS
3686
3687The request was judged to be small, so the possibility to trap it
3688depends on the way perl was compiled. By default it is not trappable.
be771a83
GS
3689However, if compiled for this, Perl may use the contents of C<$^M> as an
3690emergency pool after die()ing with this message. In this case the error
b022d2d2
IZ
3691is trappable I<once>, and the error message will include the line and file
3692where the failed request happened.
55497cff 3693
1b979e0a
IZ
3694=item Out of memory during ridiculously large request
3695
3696(F) You can't allocate more than 2^31+"small amount" bytes. This error
be771a83
GS
3697is most likely to be caused by a typo in the Perl program. e.g.,
3698C<$arr[time]> instead of C<$arr[$time]>.
1b979e0a 3699
6df41af2
GS
3700=item Out of memory for yacc stack
3701
be771a83
GS
3702(F) The yacc parser wanted to grow its stack so it could continue
3703parsing, but realloc() wouldn't give it more memory, virtual or
3704otherwise.
6df41af2 3705
28be1210
TH
3706=item '.' outside of string in pack
3707
3708(F) The argument to a '.' in your template tried to move the working
3709position to before the start of the packed string being built.
3710
49704364 3711=item '@' outside of string in unpack
6df41af2 3712
49704364 3713(F) You had a template that specified an absolute position outside
6df41af2
GS
3714the string being unpacked. See L<perlfunc/pack>.
3715
f337b084
TH
3716=item '@' outside of string with malformed UTF-8 in unpack
3717
3718(F) You had a template that specified an absolute position outside
6903afa2 3719the string being unpacked. The string being unpacked was also invalid
fa816bf3 3720UTF-8. See L<perlfunc/pack>.
f337b084 3721
7778d804
FC
3722=item overload arg '%s' is invalid
3723
3724(W overload) The L<overload> pragma was passed an argument it did not
3725recognize. Did you mistype an operator?
3726
7cb0cfe6
BM
3727=item Overloaded dereference did not return a reference
3728
3729(F) An object with an overloaded dereference operator was dereferenced,
6903afa2 3730but the overloaded operation did not return a reference. See
7cb0cfe6
BM
3731L<overload>.
3732
3733=item Overloaded qr did not return a REGEXP
3734
3735(F) An object with a C<qr> overload was used as part of a match, but the
6903afa2 3736overloaded operation didn't return a compiled regexp. See L<overload>.
7cb0cfe6 3737
6df41af2
GS
3738=item %s package attribute may clash with future reserved word: %s
3739
be771a83
GS
3740(W reserved) A lowercase attribute name was used that had a
3741package-specific handler. That name might have a meaning to Perl itself
3742some day, even though it doesn't yet. Perhaps you should use a
3743mixed-case attribute name, instead. See L<attributes>.
6df41af2 3744
96ebfdd7
RK
3745=item pack/unpack repeat count overflow
3746
3747(F) You can't specify a repeat count so large that it overflows your
3748signed integers. See L<perlfunc/pack>.
3749
a0d0e21e
LW
3750=item page overflow
3751
be771a83
GS
3752(W io) A single call to write() produced more lines than can fit on a
3753page. See L<perlform>.
a0d0e21e 3754
6df41af2
GS
3755=item panic: %s
3756
3757(P) An internal error.
3758
c99a1475
NC
3759=item panic: attempt to call %s in %s
3760
3761(P) One of the file test operators entered a code branch that calls
3762an ACL related-function, but that function is not available on this
3763platform. Earlier checks mean that it should not be possible to
3764enter this branch on this platform.
3765
d5e473ac
SH
3766=item panic: child pseudo-process was never scheduled
3767
3768(P) A child pseudo-process in the ithreads implementation on Windows
3769was not scheduled within the time period allowed and therefore was not
3770able to initialize properly.
3771
5637ef5b 3772=item panic: ck_grep, type=%u
a0d0e21e
LW
3773
3774(P) Failed an internal consistency check trying to compile a grep.
3775
5637ef5b 3776=item panic: ck_split, type=%u
a0d0e21e
LW
3777
3778(P) Failed an internal consistency check trying to compile a split.
3779
5637ef5b 3780=item panic: corrupt saved stack index %ld
a0d0e21e 3781
be771a83
GS
3782(P) The savestack was requested to restore more localized values than
3783there are in the savestack.
a0d0e21e 3784
810b8aa5
GS
3785=item panic: del_backref
3786
3787(P) Failed an internal consistency check while trying to reset a weak
3788reference.
3789
a0d0e21e
LW
3790=item panic: die %s
3791
3792(P) We popped the context stack to an eval context, and then discovered
3793it wasn't an eval context.
3794
a0d0e21e
LW
3795=item panic: do_subst
3796
be771a83
GS
3797(P) The internal pp_subst() routine was called with invalid operational
3798data.
a0d0e21e 3799
2269b42e 3800=item panic: do_trans_%s
a0d0e21e 3801
2269b42e 3802(P) The internal do_trans routines were called with invalid operational
be771a83 3803data.
a0d0e21e 3804
b7f7fd0b
NC
3805=item panic: fold_constants JMPENV_PUSH returned %d
3806
10203f38 3807(P) While attempting folding constants an exception other than an C<eval>
b7f7fd0b
NC
3808failure was caught.
3809
c635e13b 3810=item panic: frexp
3811
3812(P) The library function frexp() failed, making printf("%f") impossible.
3813
5637ef5b 3814=item panic: goto, type=%u, ix=%ld
a0d0e21e
LW
3815
3816(P) We popped the context stack to a context with the specified label,
3817and then discovered it wasn't a context we know how to do a goto in.
3818
b0d55c99
FC
3819=item panic: gp_free failed to free glob pointer
3820
3821(P) The internal routine used to clear a typeglob's entries tried
6903afa2
FC
3822repeatedly, but each time something re-created entries in the glob.
3823Most likely the glob contains an object with a reference back to
3824the glob and a destructor that adds a new object to the glob.
b0d55c99 3825
5637ef5b 3826=item panic: INTERPCASEMOD, %s
a0d0e21e
LW
3827
3828(P) The lexer got into a bad state at a case modifier.
3829
5637ef5b 3830=item panic: INTERPCONCAT, %s
a0d0e21e
LW
3831
3832(P) The lexer got into a bad state parsing a string with brackets.
3833
e446cec8
IZ
3834=item panic: kid popen errno read
3835
3836(F) forked child returned an incomprehensible message about its errno.
3837
5637ef5b 3838=item panic: last, type=%u
a0d0e21e
LW
3839
3840(P) We popped the context stack to a block context, and then discovered
3841it wasn't a block context.
3842
3843=item panic: leave_scope clearsv
3844
be771a83
GS
3845(P) A writable lexical variable became read-only somehow within the
3846scope.
a0d0e21e 3847
5637ef5b 3848=item panic: leave_scope inconsistency %u
a0d0e21e
LW
3849
3850(P) The savestack probably got out of sync. At least, there was an
3851invalid enum on the top of it.
3852
810b8aa5
GS
3853=item panic: magic_killbackrefs
3854
3855(P) Failed an internal consistency check while trying to reset all weak
3856references to an object.
3857
5637ef5b 3858=item panic: malloc, %s
6df41af2
GS
3859
3860(P) Something requested a negative number of bytes of malloc.
3861
27d5b266
JH
3862=item panic: memory wrap
3863
3864(P) Something tried to allocate more memory than possible.
3865
5637ef5b 3866=item panic: pad_alloc, %p!=%p
a0d0e21e
LW
3867
3868(P) The compiler got confused about which scratch pad it was allocating
3869and freeing temporaries and lexicals from.
3870
5637ef5b 3871=item panic: pad_free curpad, %p!=%p
a0d0e21e
LW
3872
3873(P) The compiler got confused about which scratch pad it was allocating
3874and freeing temporaries and lexicals from.
3875
3876=item panic: pad_free po
3877
3878(P) An invalid scratch pad offset was detected internally.
3879
5637ef5b 3880=item panic: pad_reset curpad, %p!=%p
a0d0e21e
LW
3881
3882(P) The compiler got confused about which scratch pad it was allocating
3883and freeing temporaries and lexicals from.
3884
3885=item panic: pad_sv po
3886
3887(P) An invalid scratch pad offset was detected internally.
3888
5637ef5b 3889=item panic: pad_swipe curpad, %p!=%p
a0d0e21e
LW
3890
3891(P) The compiler got confused about which scratch pad it was allocating
3892and freeing temporaries and lexicals from.
3893
3894=item panic: pad_swipe po
3895
3896(P) An invalid scratch pad offset was detected internally.
3897
5637ef5b 3898=item panic: pp_iter, type=%u
a0d0e21e
LW
3899
3900(P) The foreach iterator got called in a non-loop context frame.
3901
96ebfdd7
RK
3902=item panic: pp_match%s
3903
3904(P) The internal pp_match() routine was called with invalid operational
3905data.
3906
5637ef5b 3907=item panic: pp_split, pm=%p, s=%p
2269b42e
JH
3908
3909(P) Something terrible went wrong in setting up for the split.
3910
5637ef5b 3911=item panic: realloc, %s
a0d0e21e
LW
3912
3913(P) Something requested a negative number of bytes of realloc.
3914
ccfb6d2e
FC
3915=item panic: reference miscount on nsv in sv_replace() (%d != 1)
3916
3917(P) The internal sv_replace() function was handed a new SV with a
3918reference count other than 1.
3919
5637ef5b 3920=item panic: restartop in %s
a0d0e21e
LW
3921
3922(P) Some internal routine requested a goto (or something like it), and
3923didn't supply the destination.
3924
5637ef5b 3925=item panic: return, type=%u
a0d0e21e
LW
3926
3927(P) We popped the context stack to a subroutine or eval context, and
3928then discovered it wasn't a subroutine or eval context.
3929
5637ef5b 3930=item panic: scan_num, %s
a0d0e21e
LW
3931
3932(P) scan_num() got called on something that wasn't a number.
3933
d24ca0c5
DM
3934=item panic: Sequence (?{...}): no code block found
3935
3936(P) while compiling a pattern that has embedded (?{}) or (??{}) code
3937blocks, perl couldn't locate the code block that should have already been
3938seen and compiled by perl before control passed to the regex compiler.
3939
5a25739d
FC
3940=item panic: strxfrm() gets absurd - a => %u, ab => %u
3941
3942(P) The interpreter's sanity check of the C function strxfrm() failed.
3943In your current locale the returned transformation of the string "ab"
3944is shorter than that of the string "a", which makes no sense.
3945
6c65d5f9
NC
3946=item panic: sv_chop %s
3947
3948(P) The sv_chop() routine was passed a position that is not within the
3949scalar's string buffer.
3950
5637ef5b 3951=item panic: sv_insert, midend=%p, bigend=%p
a0d0e21e
LW
3952
3953(P) The sv_insert() routine was told to remove more string than there
3954was string.
3955
3956=item panic: top_env
3957
6224f72b 3958(P) The compiler attempted to do a goto, or something weird like that.
a0d0e21e 3959
65bca31a
NC
3960=item panic: unimplemented op %s (#%d) called
3961
a1efa96e
FC
3962(P) The compiler is screwed up and attempted to use an op that isn't
3963permitted at run time.
65bca31a 3964
dea0fc0b
JH
3965=item panic: utf16_to_utf8: odd bytelen
3966
3967(P) Something tried to call utf16_to_utf8 with an odd (as opposed
64977eb6 3968to even) byte length.
dea0fc0b 3969
e0ea5e2d
NC
3970=item panic: utf16_to_utf8_reversed: odd bytelen
3971
3972(P) Something tried to call utf16_to_utf8_reversed with an odd (as opposed
3973to even) byte length.
3974
5637ef5b 3975=item panic: yylex, %s
2f7da168
RK
3976
3977(P) The lexer got into a bad state while processing a case modifier.
3978
78181aa9
KW
3979=item Parentheses missing around "%s" list
3980
3981(W parenthesis) You said something like
3982
3983 my $foo, $bar = @_;
3984
3985when you meant
3986
3987 my ($foo, $bar) = @_;
3988
3989Remember that "my", "our", "local" and "state" bind tighter than comma.
3990
28ac2b49
Z
3991=item Parsing code internal error (%s)
3992
3993(F) Parsing code supplied by an extension violated the parser's API in
3994a detectable way.
3995
9816f121
KW
3996=item Passing malformed UTF-8 to "%s" is deprecated
3997
3998(D deprecated, utf8) This message indicates a bug either in the Perl
3999core or in XS code. Such code was trying to find out if a character,
4000allegedly stored internally encoded as UTF-8, was of a given type, such
4001as being punctuation or a digit. But the character was not encoded in
4002legal UTF-8. The C<%s> is replaced by a string that can be used by
4003knowledgeable people to determine what the type being checked against
4004was. If C<utf8> warnings are enabled, a further message is raised,
4005giving details of the malformation.
4006
b9bd8d8c 4007=item Pattern subroutine nesting without pos change exceeded limit in regex
1a147d38
YO
4008
4009(F) You used a pattern that uses too many nested subpattern calls without
6903afa2
FC
4010consuming any text. Restructure the pattern so text is consumed before
4011the nesting limit is exceeded.
1a147d38 4012
96ebfdd7
RK
4013=item C<-p> destination: %s
4014
4015(F) An error occurred during the implicit output invoked by the C<-p>
4016command-line switch. (This output goes to STDOUT unless you've
4017redirected it with select().)
4018
4019=item (perhaps you forgot to load "%s"?)
4020
4021(F) This is an educated guess made in conjunction with the message
4022"Can't locate object method \"%s\" via package \"%s\"". It often means
4023that a method requires a package that has not been loaded.
4024
b33c0c71
MH
4025=item Perl folding rules are not up-to-date for 0x%X; please use the perlbug
4026utility to report; in regex; marked by <-- HERE in m/%s/
d50a4f90 4027
6014bd26
JK
4028(S regexp) You used a regular expression with case-insensitive matching,
4029and there is a bug in Perl in which the built-in regular expression
4030folding rules are not accurate. This may lead to incorrect results.
4031Please report this as a bug using the L<perlbug> utility.
d50a4f90 4032
1109a392
MHM
4033=item Perl_my_%s() not available
4034
4035(F) Your platform has very uncommon byte-order and integer size,
4036so it was not possible to set up some or all fixed-width byte-order
4037conversion functions. This is only a problem when you're using the
4038'<' or '>' modifiers in (un)pack templates. See L<perlfunc/pack>.
4039
6651ba0b
FC
4040=item Perl %s required (did you mean %s?)--this is only %s, stopped
4041
4042(F) The code you are trying to run has asked for a newer version of
4043Perl than you are running. Perhaps C<use 5.10> was written instead
4044of C<use 5.010> or C<use v5.10>. Without the leading C<v>, the number is
4045interpreted as a decimal, with every three digits after the
4046decimal point representing a part of the version number. So 5.10
4047is equivalent to v5.100.
4048
6903f24f 4049=item Perl %s required--this is only %s, stopped
6d3b25aa
RGS
4050
4051(F) The module in question uses features of a version of Perl more
4052recent than the currently running version. How long has it been since
4053you upgraded, anyway? See L<perlfunc/require>.
4054
6df41af2
GS
4055=item PERL_SH_DIR too long
4056
fa816bf3 4057(F) An error peculiar to OS/2. PERL_SH_DIR is the directory to find the
fecfaeb8 4058C<sh>-shell in. See "PERL_SH_DIR" in L<perlos2>.
6df41af2 4059
96ebfdd7
RK
4060=item PERL_SIGNALS illegal: "%s"
4061
806b6d07 4062(X) See L<perlrun/PERL_SIGNALS> for legal values.
96ebfdd7 4063
6651ba0b
FC
4064=item Perls since %s too modern--this is %s, stopped
4065
4066(F) The code you are trying to run claims it will not run
4067on the version of Perl you are using because it is too new.
4068Maybe the code needs to be updated, or maybe it is simply
4069wrong and the version check should just be removed.
4070
675fa9ff
FC
4071=item perl: warning: Non hex character in '$ENV{PERL_HASH_SEED}', seed only partially set
4072
ff9c1ae8 4073(S) PERL_HASH_SEED should match /^\s*(?:0x)?[0-9a-fA-F]+\s*\z/ but it
675fa9ff
FC
4074contained a non hex character. This could mean you are not using the
4075hash seed you think you are.
6a5b4183 4076
6df41af2
GS
4077=item perl: warning: Setting locale failed.
4078
4079(S) The whole warning message will look something like:
4080
4081 perl: warning: Setting locale failed.
4082 perl: warning: Please check that your locale settings:
4083 LC_ALL = "En_US",
4084 LANG = (unset)
4085 are supported and installed on your system.
4086 perl: warning: Falling back to the standard locale ("C").
4087
4088Exactly what were the failed locale settings varies. In the above the
4089settings were that the LC_ALL was "En_US" and the LANG had no value.
0ea6b70f
JH
4090This error means that Perl detected that you and/or your operating
4091system supplier and/or system administrator have set up the so-called
4092locale system but Perl could not use those settings. This was not
4093dead serious, fortunately: there is a "default locale" called "C" that
4b07a369
FC
4094Perl can and will use, and the script will be run. Before you really
4095fix the problem, however, you will get the same error message each
4096time you run Perl. How to really fix the problem can be found in
0ea6b70f 4097L<perllocale> section B<LOCALE PROBLEMS>.
6df41af2 4098
6a5b4183
YO
4099=item perl: warning: strange setting in '$ENV{PERL_PERTURB_KEYS}': '%s'
4100
ff9c1ae8 4101(S) Perl was run with the environment variable PERL_PERTURB_KEYS defined
675fa9ff 4102but containing an unexpected value. The legal values of this setting
6a5b4183
YO
4103are as follows.
4104
4105 Numeric | String | Result
4106 --------+---------------+-----------------------------------------
4107 0 | NO | Disables key traversal randomization
4108 1 | RANDOM | Enables full key traversal randomization
555bd962
BG
4109 2 | DETERMINISTIC | Enables repeatable key traversal
4110 | | randomization
6a5b4183
YO
4111
4112Both numeric and string values are accepted, but note that string values are
675fa9ff 4113case sensitive. The default for this setting is "RANDOM" or 1.
aac486f1 4114
bd3fa61c 4115=item pid %x not a child
748a9306 4116
be771a83
GS
4117(W exec) A warning peculiar to VMS. Waitpid() was asked to wait for a
4118process which isn't a subprocess of the current process. While this is
4119fine from VMS' perspective, it's probably not what you intended.
748a9306 4120
49704364 4121=item 'P' must have an explicit size in unpack
3bf38418
WL
4122
4123(F) The unpack format P must have an explicit size, not "*".
4124
96ebfdd7
RK
4125=item POSIX class [:%s:] unknown in regex; marked by <-- HERE in m/%s/
4126
4127(F) The class in the character class [: :] syntax is unknown. The <-- HERE
9e3ec65c 4128shows whereabouts in the regular expression the problem was discovered.
96ebfdd7
RK
4129Note that the POSIX character classes do B<not> have the C<is> prefix
4130the corresponding C interfaces have: in other words, it's C<[[:print:]]>,
4131not C<isprint>. See L<perlre>.
4132
4133=item POSIX getpgrp can't take an argument
4134
4135(F) Your system has POSIX getpgrp(), which takes no argument, unlike
4136the BSD version, which takes a pid.
4137
b33c0c71 4138=item POSIX syntax [%c %c] belongs inside character classes in regex; marked by
6fbc9859 4139<-- HERE in m/%s/
b45f050a 4140
9a0b3859 4141(W regexp) The character class constructs [: :], [= =], and [. .] go
7253e4e3
RK
4142I<inside> character classes, the [] are part of the construct, for example:
4143/[012[:alpha:]345]/. Note that [= =] and [. .] are not currently
9e3ec65c
FC
4144implemented; they are simply placeholders for future extensions and
4145will cause fatal errors. The <-- HERE shows whereabouts in the regular
4146expression the problem was discovered. See L<perlre>.
b45f050a 4147
6fbc9859
MH
4148=item POSIX syntax [. .] is reserved for future extensions in regex; marked by
4149<-- HERE in m/%s/
b45f050a 4150
a125938c
FC
4151(F) Within regular expression character classes ([]) the syntax beginning
4152with "[." and ending with ".]" is reserved for future extensions. If you
4153need to represent those character sequences inside a regular expression
4154character class, just quote the square brackets with the backslash: "\[."
9e3ec65c 4155and ".\]". The <-- HERE shows whereabouts in the regular expression the
a125938c 4156problem was discovered. See L<perlre>.
b45f050a 4157
6fbc9859
MH
4158=item POSIX syntax [= =] is reserved for future extensions in regex; marked by
4159<-- HERE in m/%s/
b45f050a 4160
7253e4e3
RK
4161(F) Within regular expression character classes ([]) the syntax beginning
4162with "[=" and ending with "=]" is reserved for future extensions. If you
4163need to represent those character sequences inside a regular expression
4164character class, just quote the square brackets with the backslash: "\[="
9e3ec65c 4165and "=\]". The <-- HERE shows whereabouts in the regular expression the
7253e4e3 4166problem was discovered. See L<perlre>.
b45f050a 4167
bbce6d69 4168=item Possible attempt to put comments in qw() list
4169
e476b1b5 4170(W qw) qw() lists contain items separated by whitespace; as with literal
75b44862 4171strings, comment characters are not ignored, but are instead treated as
be771a83
GS
4172literal data. (You may have used different delimiters than the
4173parentheses shown here; braces are also frequently used.)
bbce6d69 4174
774d564b 4175You probably wrote something like this:
4176
54310121 4177 @list = qw(
774d564b 4178 a # a comment
bbce6d69 4179 b # another comment
774d564b 4180 );
bbce6d69 4181
4182when you should have written this:
4183
774d564b 4184 @list = qw(
54310121 4185 a
4186 b
774d564b 4187 );
4188
4189If you really want comments, build your list the
4190old-fashioned way, with quotes and commas:
4191
4192 @list = (
4193 'a', # a comment
4194 'b', # another comment
4195 );
bbce6d69 4196
4197=item Possible attempt to separate words with commas
4198
be771a83
GS
4199(W qw) qw() lists contain items separated by whitespace; therefore
4200commas aren't needed to separate the items. (You may have used
4201different delimiters than the parentheses shown here; braces are also
4202frequently used.)
bbce6d69 4203
54310121 4204You probably wrote something like this:
bbce6d69 4205
774d564b 4206 qw! a, b, c !;
4207
4208which puts literal commas into some of the list items. Write it without
4209commas if you don't want them to appear in your data:
bbce6d69 4210
774d564b 4211 qw! a b c !;
bbce6d69 4212
a0d0e21e
LW
4213=item Possible memory corruption: %s overflowed 3rd argument
4214
4215(F) An ioctl() or fcntl() returned more than Perl was bargaining for.
4216Perl guesses a reasonable buffer size, but puts a sentinel byte at the
4217end of the buffer just in case. This sentinel byte got clobbered, and
4218Perl assumes that memory is now corrupted. See L<perlfunc/ioctl>.
4219
276b2a0c
RGS
4220=item Possible precedence problem on bitwise %c operator
4221
4222(W precedence) Your program uses a bitwise logical operator in conjunction
4223with a numeric comparison operator, like this :
4224
4225 if ($x & $y == 0) { ... }
4226
4227This expression is actually equivalent to C<$x & ($y == 0)>, due to the
6903afa2 4228higher precedence of C<==>. This is probably not what you want. (If you
96a925ab
YST
4229really meant to write this, disable the warning, or, better, put the
4230parentheses explicitly and write C<$x & ($y == 0)>).
276b2a0c 4231
77772344
B
4232=item Possible unintended interpolation of $\ in regex
4233
4234(W ambiguous) You said something like C<m/$\/> in a regex.
4235The regex C<m/foo$\s+bar/m> translates to: match the word 'foo', the output
8ddb446c 4236record separator (see L<perlvar/$\>) and the letter 's' (one time or more)
77772344
B
4237followed by the word 'bar'.
4238
4239If this is what you intended then you can silence the warning by using
4240C<m/${\}/> (for example: C<m/foo${\}s+bar/>).
4241
4242If instead you intended to match the word 'foo' at the end of the line
4243followed by whitespace and the word 'bar' on the next line then you can use
4244C<m/$(?)\/> (for example: C<m/foo$(?)\s+bar/>).
4245
e5035638
FC
4246=item Possible unintended interpolation of %s in string
4247
ccf3535a 4248(W ambiguous) You said something like '@foo' in a double-quoted string
6903afa2 4249but there was no array C<@foo> in scope at the time. If you wanted a
e5035638
FC
4250literal @foo, then write it as \@foo; otherwise find out what happened
4251to the array you apparently lost track of.
4252
a0d0e21e
LW
4253=item Precedence problem: open %s should be open(%s)
4254
e476b1b5 4255(S precedence) The old irregular construct
cb1a09d0 4256
a0d0e21e
LW
4257 open FOO || die;
4258
4259is now misinterpreted as
4260
4261 open(FOO || die);
4262
be771a83
GS
4263because of the strict regularization of Perl 5's grammar into unary and
4264list operators. (The old open was a little of both.) You must put
4265parentheses around the filehandle, or use the new "or" operator instead
4266of "||".
a0d0e21e 4267
3cdd684c
TP
4268=item Premature end of script headers
4269
4270See Server error.
4271
6df41af2
GS
4272=item printf() on closed filehandle %s
4273
be771a83 4274(W closed) The filehandle you're writing to got itself closed sometime
c289d2f7 4275before now. Check your control flow.
6df41af2 4276
9a7dcd9c 4277=item print() on closed filehandle %s
a0d0e21e 4278
be771a83 4279(W closed) The filehandle you're printing on got itself closed sometime
c289d2f7 4280before now. Check your control flow.
a0d0e21e 4281
6df41af2 4282=item Process terminated by SIG%s
a0d0e21e 4283
6df41af2
GS
4284(W) This is a standard message issued by OS/2 applications, while *nix
4285applications die in silence. It is considered a feature of the OS/2
4286port. One can easily disable this by appropriate sighandlers, see
4287L<perlipc/"Signals">. See also "Process terminated by SIGTERM/SIGINT"
fecfaeb8 4288in L<perlos2>.
a0d0e21e 4289
0d0b4b3b
KW
4290=item Property '%s' is unknown in regex; marked by <-- HERE in m/%s/
4291
675fa9ff 4292(F) The named property which you specified via C<\p> or C<\P> is not one
0d0b4b3b
KW
4293known to Perl. Perhaps you misspelled the name? See
4294L<perluniprops/Properties accessible through \p{} and \P{}>
675fa9ff
FC
4295for a complete list of available official
4296properties. If it is a L<user-defined property|perlunicode/User-Defined Character Properties>
0d0b4b3b
KW
4297it must have been defined by the time the regular expression is
4298compiled.
4299
327323c1
RGS
4300=item Prototype after '%c' for %s : %s
4301
fa816bf3
FC
4302(W illegalproto) A character follows % or @ in a prototype. This is
4303useless, since % and @ gobble the rest of the subroutine arguments.
327323c1 4304
3fe9a6f1 4305=item Prototype mismatch: %s vs %s
4633a7c4 4306
9a0b3859 4307(S prototype) The subroutine being declared or defined had previously been
be771a83 4308declared or defined with a different function prototype.
4633a7c4 4309
ed9aa3b7
SG
4310=item Prototype not terminated
4311
2a6fd447 4312(F) You've omitted the closing parenthesis in a function prototype
ed9aa3b7
SG
4313definition.
4314
f9eb106c
FC
4315=item \p{} uses Unicode rules, not locale rules
4316
4317(W) You compiled a regular expression that contained a Unicode property
4318match (C<\p> or C<\P>), but the regular expression is also being told to
4319use the run-time locale, not Unicode. Instead, use a POSIX character
4320class, which should know about the locale's rules.
4321(See L<perlrecharclass/POSIX Character Classes>.)
4322
4323Even if the run-time locale is ISO 8859-1 (Latin1), which is a subset of
4324Unicode, some properties will give results that are not valid for that
4325subset.
4326
4327Here are a couple of examples to help you see what's going on. If the
4328locale is ISO 8859-7, the character at code point 0xD7 is the "GREEK
4329CAPITAL LETTER CHI". But in Unicode that code point means the
4330"MULTIPLICATION SIGN" instead, and C<\p> always uses the Unicode
4331meaning. That means that C<\p{Alpha}> won't match, but C<[[:alpha:]]>
4332should. Only in the Latin1 locale are all the characters in the same
4333positions as they are in Unicode. But, even here, some properties give
4334incorrect results. An example is C<\p{Changes_When_Uppercased}> which
4335is true for "LATIN SMALL LETTER Y WITH DIAERESIS", but since the upper
4336case of that character is not in Latin1, in that locale it doesn't
4337change when upper cased.
4338
96ebfdd7
RK
4339=item Quantifier follows nothing in regex; marked by <-- HERE in m/%s/
4340
6903afa2 4341(F) You started a regular expression with a quantifier. Backslash it if
9e3ec65c
FC
4342you meant it literally. The <-- HERE shows whereabouts in the regular
4343expression the problem was discovered. See L<perlre>.
96ebfdd7 4344
49704364 4345=item Quantifier in {,} bigger than %d in regex; marked by <-- HERE in m/%s/
9baa0206 4346
6903afa2 4347(F) There is currently a limit to the size of the min and max values of
9e3ec65c
FC
4348the {min,max} construct. The <-- HERE shows whereabouts in the regular
4349expression the problem was discovered. See L<perlre>.
9baa0206 4350
675fa9ff
FC
4351=item Quantifier {n,m} with n > m can't match in regex
4352
4353=item Quantifier {n,m} with n > m can't match in regex; marked by <-- HERE in m/%s/
4354
4355(W regexp) Minima should be less than or equal to maxima. If you really
4356want your regexp to match something 0 times, just put {0}.
4357
b33c0c71
MH
4358=item Quantifier unexpected on zero-length expression in regex; marked by <--
4359HERE in m/%s/
9baa0206 4360
b45f050a
JF
4361(W regexp) You applied a regular expression quantifier in a place where
4362it makes no sense, such as on a zero-width assertion. Try putting the
4363quantifier inside the assertion instead. For example, the way to match
4364"abc" provided that it is followed by three repetitions of "xyz" is
4365C</abc(?=(?:xyz){3})/>, not C</abc(?=xyz){3}/>.
9baa0206 4366
9e3ec65c 4367The <-- HERE shows whereabouts in the regular expression the problem was
7253e4e3
RK
4368discovered.
4369
89ea2908
GA
4370=item Range iterator outside integer range
4371
4372(F) One (or both) of the numeric arguments to the range operator ".."
4373are outside the range which can be represented by integers internally.
be771a83
GS
4374One possible workaround is to force Perl to use magical string increment
4375by prepending "0" to your numbers.
89ea2908 4376
3b7fbd4a
SP
4377=item readdir() attempted on invalid dirhandle %s
4378
1a147d38 4379(W io) The dirhandle you're reading from is either closed or not really
3b7fbd4a
SP
4380a dirhandle. Check your control flow.
4381
96ebfdd7
RK
4382=item readline() on closed filehandle %s
4383
4384(W closed) The filehandle you're reading from got itself closed sometime
4385before now. Check your control flow.
4386
b5fe5ca2
SR
4387=item read() on closed filehandle %s
4388
4389(W closed) You tried to read from a closed filehandle.
4390
4391=item read() on unopened filehandle %s
4392
4393(W unopened) You tried to read from a filehandle that was never opened.
4394
de42a5a9 4395=item Reallocation too large: %x
6df41af2
GS
4396
4397(F) You can't allocate more than 64K on an MS-DOS machine.
4398
4ad56ec9
IZ
4399=item realloc() of freed memory ignored
4400
be771a83
GS
4401(S malloc) An internal routine called realloc() on something that had
4402already been freed.
4ad56ec9 4403
a0d0e21e
LW
4404=item Recompile perl with B<-D>DEBUGGING to use B<-D> switch
4405
19b29141 4406(S debugging) You can't use the B<-D> option unless the code to produce
be771a83 4407the desired output is compiled into Perl, which entails some overhead,
a0d0e21e
LW
4408which is why it's currently left out of your copy.
4409
6651ba0b
FC
4410=item Recursive call to Perl_load_module in PerlIO_find_layer
4411
4412(P) It is currently not permitted to load modules when creating
4413a filehandle inside an %INC hook. This can happen with C<open my
4414$fh, '<', \$scalar>, which implicitly loads PerlIO::scalar. Try
4415loading PerlIO::scalar explicitly first.
4416
3e0ccd42 4417=item Recursive inheritance detected in package '%s'
a0d0e21e 4418
2c7d6b9c
RGS
4419(F) While calculating the method resolution order (MRO) of a package, Perl
4420believes it found an infinite loop in the C<@ISA> hierarchy. This is a
4421crude check that bails out after 100 levels of C<@ISA> depth.
a0d0e21e 4422
12605ff9
FC
4423=item refcnt_dec: fd %d%s
4424
2e0cfa16
FC
4425=item refcnt: fd %d%s
4426
12605ff9
FC
4427=item refcnt_inc: fd %d%s
4428
fa816bf3 4429(P) Perl's I/O implementation failed an internal consistency check. If
2e0cfa16
FC
4430you see this message, something is very wrong.
4431
1930e939
TP
4432=item Reference found where even-sized list expected
4433
be771a83 4434(W misc) You gave a single reference where Perl was expecting a list
6903afa2
FC
4435with an even number of elements (for assignment to a hash). This
4436usually means that you used the anon hash constructor when you meant
4437to use parens. In any case, a hash requires key/value B<pairs>.
7b8d334a
GS
4438
4439 %hash = { one => 1, two => 2, }; # WRONG
4440 %hash = [ qw/ an anon array / ]; # WRONG
4441 %hash = ( one => 1, two => 2, ); # right
4442 %hash = qw( one 1 two 2 ); # also fine
4443
810b8aa5
GS
4444=item Reference is already weak
4445
e476b1b5 4446(W misc) You have attempted to weaken a reference that is already weak.
810b8aa5
GS
4447Doing so has no effect.
4448
aec0ef10 4449=item Reference to invalid group 0 in regex; marked by <-- HERE in m/%s/
b72d83b2 4450
6903afa2
FC
4451(F) You used C<\g0> or similar in a regular expression. You may refer
4452to capturing parentheses only with strictly positive integers
4453(normal backreferences) or with strictly negative integers (relative
4454backreferences). Using 0 does not make sense.
b72d83b2 4455
49704364 4456=item Reference to nonexistent group in regex; marked by <-- HERE in m/%s/
b45f050a
JF
4457
4458(F) You used something like C<\7> in your regular expression, but there are
6903afa2 4459not at least seven sets of capturing parentheses in the expression. If
bbaee129
FC
4460you wanted to have the character with ordinal 7 inserted into the regular
4461expression, prepend zeroes to make it three digits long: C<\007>
9baa0206 4462
9e3ec65c 4463The <-- HERE shows whereabouts in the regular expression the problem was
b45f050a 4464discovered.
9baa0206 4465
1a147d38
YO
4466=item Reference to nonexistent named group in regex; marked by <-- HERE in m/%s/
4467
4468(F) You used something like C<\k'NAME'> or C<< \k<NAME> >> in your regular
9381611c 4469expression, but there is no corresponding named capturing parentheses
6903afa2 4470such as C<(?'NAME'...)> or C<< (?<NAME>...) >>. Check if the name has been
9381611c 4471spelled correctly both in the backreference and the declaration.
1a147d38 4472
9e3ec65c 4473The <-- HERE shows whereabouts in the regular expression the problem was
1a147d38
YO
4474discovered.
4475
6fbc9859
MH
4476=item Reference to nonexistent or unclosed group in regex; marked by <-- HERE
4477in m/%s/
1a147d38 4478
bcb95744
FC
4479(F) You used something like C<\g{-7}> in your regular expression, but there
4480are not at least seven sets of closed capturing parentheses in the
4481expression before where the C<\g{-7}> was located.
1a147d38 4482
9e3ec65c 4483The <-- HERE shows whereabouts in the regular expression the problem was
1a147d38
YO
4484discovered.
4485
a0d0e21e
LW
4486=item regexp memory corruption
4487
4488(P) The regular expression engine got confused by what the regular
4489expression compiler gave it.
4490
ff3f26d2
KW
4491=item Regexp modifier "/%c" may appear a maximum of twice
4492
3955e1a9
KW
4493=item Regexp modifier "/%c" may not appear twice
4494
f6a766d5 4495(F syntax, regexp) The regular expression pattern had too many occurrences
ff3f26d2 4496of the specified modifier. Remove the extraneous ones.
3955e1a9 4497
6fbc9859
MH
4498=item Regexp modifier "%c" may not appear after the "-" in regex; marked by <--
4499HERE in m/%s/
9442e3b8 4500
f8b5bc72
FC
4501(F) Turning off the given modifier has the side effect of turning on
4502another one. Perl currently doesn't allow this. Reword the regular
9442e3b8
KW
4503expression to use the modifier you want to turn on (and place it before
4504the minus), instead of the one you want to turn off.
4505
3955e1a9
KW
4506=item Regexp modifiers "/%c" and "/%c" are mutually exclusive
4507
f6a766d5 4508(F syntax, regexp) The regular expression pattern had more than one of these
3955e1a9
KW
4509mutually exclusive modifiers. Retain only the modifier that is
4510supposed to be there.
4511
aec0ef10 4512=item Regexp out of space in regex m/%s/
a0d0e21e 4513
be771a83
GS
4514(P) A "can't happen" error, because safemalloc() should have caught it
4515earlier.
a0d0e21e 4516
a7f533cb 4517=item Repeated format line will never terminate (~~ and @#)
a1b95068 4518
d7f8936a 4519(F) Your format contains the ~~ repeat-until-blank sequence and a
a1b95068 4520numeric field that will never go blank so that the repetition never
6903afa2 4521terminates. You might use ^# instead. See L<perlform>.
a1b95068 4522
b08e453b
RB
4523=item Replacement list is longer than search list
4524
4525(W misc) You have used a replacement list that is longer than the
fa816bf3 4526search list. So the additional elements in the replacement list
b08e453b
RB
4527are meaningless.
4528
5e0a247b
KW
4529=item '%s' resolved to '\o{%s}%d'
4530
4531(W misc, regexp) You wrote something like C<\08>, or C<\179> in a
4532double-quotish string. All but the last digit is treated as a single
4533character, specified in octal. The last digit is the next character in
4534the string. To tell Perl that this is indeed what you want, you can use
4535the C<\o{ }> syntax, or use exactly three digits to specify the octal
4536for the character.
4537
a0d0e21e
LW
4538=item Reversed %s= operator
4539
be771a83 4540(W syntax) You wrote your assignment operator backwards. The = must
964742a1 4541always come last, to avoid ambiguity with subsequent unary operators.
a0d0e21e 4542
abc7ecad
SP
4543=item rewinddir() attempted on invalid dirhandle %s
4544
4545(W io) The dirhandle you tried to do a rewinddir() on is either closed or not
4546really a dirhandle. Check your control flow.
4547
96ebfdd7
RK
4548=item Scalars leaked: %d
4549
7bd1381d 4550(S internal) Something went wrong in Perl's internal bookkeeping
4f5966a5
FC
4551of scalars: not all scalar variables were deallocated by the time
4552Perl exited. What this usually indicates is a memory leak, which
4553is of course bad, especially if the Perl program is intended to be
4554long-running.
96ebfdd7 4555
a0d0e21e
LW
4556=item Scalar value @%s[%s] better written as $%s[%s]
4557
be771a83
GS
4558(W syntax) You've used an array slice (indicated by @) to select a
4559single element of an array. Generally it's better to ask for a scalar
4560value (indicated by $). The difference is that C<$foo[&bar]> always
4561behaves like a scalar, both when assigning to it and when evaluating its
4562argument, while C<@foo[&bar]> behaves like a list when you assign to it,
4563and provides a list context to its subscript, which can do weird things
4564if you're expecting only one subscript.
a0d0e21e 4565
748a9306 4566On the other hand, if you were actually hoping to treat the array
5f05dabc 4567element as a list, you need to look into how references work, because
748a9306
LW
4568Perl will not magically convert between scalars and lists for you. See
4569L<perlref>.
4570
a6006777 4571=item Scalar value @%s{%s} better written as $%s{%s}
4572
75b44862 4573(W syntax) You've used a hash slice (indicated by @) to select a single
be771a83
GS
4574element of a hash. Generally it's better to ask for a scalar value
4575(indicated by $). The difference is that C<$foo{&bar}> always behaves
4576like a scalar, both when assigning to it and when evaluating its
4577argument, while C<@foo{&bar}> behaves like a list when you assign to it,
4578and provides a list context to its subscript, which can do weird things
4579if you're expecting only one subscript.
4580
4581On the other hand, if you were actually hoping to treat the hash element
4582as a list, you need to look into how references work, because Perl will
4583not magically convert between scalars and lists for you. See
a6006777 4584L<perlref>.
4585
a0d0e21e
LW
4586=item Search pattern not terminated
4587
4588(F) The lexer couldn't find the final delimiter of a // or m{}
4589construct. Remember that bracketing delimiters count nesting level.
fb73857a 4590Missing the leading C<$> from a variable C<$m> may cause this error.
a0d0e21e 4591
0cb1bcd7 4592Note that since Perl 5.9.0 a // can also be the I<defined-or>
5d9c98cd
JH
4593construct, not just the empty search pattern. Therefore code written
4594in Perl 5.9.0 or later that uses the // as the I<defined-or> can be
4595misparsed by pre-5.9.0 Perls as a non-terminated search pattern.
4596
25c09cbf
SF
4597=item Search pattern not terminated or ternary operator parsed as search pattern
4598
4599(F) The lexer couldn't find the final delimiter of a C<?PATTERN?>
4600construct.
4601
4602The question mark is also used as part of the ternary operator (as in
4603C<foo ? 0 : 1>) leading to some ambiguous constructions being wrongly
6903afa2 4604parsed. One way to disambiguate the parsing is to put parentheses around
25c09cbf
SF
4605the conditional expression, i.e. C<(foo) ? 0 : 1>.
4606
abc7ecad
SP
4607=item seekdir() attempted on invalid dirhandle %s
4608
4609(W io) The dirhandle you are doing a seekdir() on is either closed or not
4610really a dirhandle. Check your control flow.
4611
3257ea4f
FC
4612=item %sseek() on unopened filehandle
4613
4614(W unopened) You tried to use the seek() or sysseek() function on a
4615filehandle that was either never opened or has since been closed.
4616
a0d0e21e
LW
4617=item select not implemented
4618
4619(F) This machine doesn't implement the select() system call.
4620
ae21d580 4621=item Self-ties of arrays and hashes are not supported
68a4a7e4 4622
ae21d580
JH
4623(F) Self-ties are of arrays and hashes are not supported in
4624the current implementation.
68a4a7e4 4625
6df41af2 4626=item Semicolon seems to be missing
a0d0e21e 4627
75b44862
GS
4628(W semicolon) A nearby syntax error was probably caused by a missing
4629semicolon, or possibly some other missing operator, such as a comma.
a0d0e21e
LW
4630
4631=item semi-panic: attempt to dup freed string
4632
be771a83
GS
4633(S internal) The internal newSVsv() routine was called to duplicate a
4634scalar that had previously been marked as free.
a0d0e21e 4635
6df41af2 4636=item sem%s not implemented
a0d0e21e 4637
6df41af2 4638(F) You don't have System V semaphore IPC on your system.
a0d0e21e 4639
69282e91 4640=item send() on closed socket %s
a0d0e21e 4641
be771a83 4642(W closed) The socket you're sending to got itself closed sometime
c289d2f7 4643before now. Check your control flow.
a0d0e21e 4644
7253e4e3 4645=item Sequence (? incomplete in regex; marked by <-- HERE in m/%s/
7b8d334a 4646
6903afa2 4647(F) A regular expression ended with an incomplete extension (?. The
9e3ec65c 4648<-- HERE shows whereabouts in the regular expression the problem was
6903afa2 4649discovered. See L<perlre>.
1b1626e4 4650
49704364 4651=item Sequence (?%s...) not implemented in regex; marked by <-- HERE in m/%s/
a0d0e21e 4652
6903afa2 4653(F) A proposed regular expression extension has the character reserved
9e3ec65c
FC
4654but has not yet been written. The <-- HERE shows whereabouts in the
4655regular expression the problem was discovered. See L<perlre>.
b45f050a 4656
49704364 4657=item Sequence (?%s...) not recognized in regex; marked by <-- HERE in m/%s/
a0d0e21e 4658
7253e4e3 4659(F) You used a regular expression extension that doesn't make sense. The
9e3ec65c 4660<-- HERE shows whereabouts in the regular expression the problem was
fb85c044
KW
4661discovered. This happens when using the C<(?^...)> construct to tell
4662Perl to use the default regular expression modifiers, and you
9442e3b8 4663redundantly specify a default modifier. For other
9de15fec 4664causes, see L<perlre>.
a0d0e21e 4665
aec0ef10 4666=item Sequence (?#... not terminated in regex m/%s/
6df41af2
GS
4667
4668(F) A regular expression comment must be terminated by a closing
aec0ef10 4669parenthesis. Embedded parentheses aren't allowed. See
7253e4e3 4670L<perlre>.
6df41af2 4671
5a25739d
FC
4672=item Sequence \%s... not terminated in regex; marked by <-- HERE in m/%s/
4673
4674(F) The regular expression expects a mandatory argument following the escape
4675sequence and this has been omitted or incorrectly written.
4676
9da1dd8f
DM
4677=item Sequence (?{...}) not terminated with ')'
4678
be149b43
DM
4679(F) The end of the perl code contained within the {...} must be
4680followed immediately by a ')'.
9da1dd8f 4681
3d6c5fec 4682=item Server error (a.k.a. "500 Server error")
a5f75d66 4683
6903afa2
FC
4684(A) This is the error message generally seen in a browser window
4685when trying to run a CGI program (including SSI) over the web. The
4686actual error text varies widely from server to server. The most
4687frequently-seen variants are "500 Server error", "Method (something)
4688not permitted", "Document contains no data", "Premature end of script
4689headers", and "Did not produce a valid header".
9607fc9c 4690
4691B<This is a CGI error, not a Perl error>.
4692
6903afa2
FC
4693You need to make sure your script is executable, is accessible by
4694the user CGI is running the script under (which is probably not the
4695user account you tested it under), does not rely on any environment
4696variables (like PATH) from the user it isn't running under, and isn't
4697in a location where the CGI server can't find it, basically, more or
4698less. Please see the following for more information:
9607fc9c 4699
06a5f41f
JH
4700 http://www.perl.org/CGI_MetaFAQ.html
4701 http://www.htmlhelp.org/faq/cgifaq.html
4702 http://www.w3.org/Security/Faq/
a5f75d66 4703
be94a901
GS
4704You should also look at L<perlfaq9>.
4705
a0d0e21e
LW
4706=item setegid() not implemented
4707
be771a83
GS
4708(F) You tried to assign to C<$)>, and your operating system doesn't
4709support the setegid() system call (or equivalent), or at least Configure
4710didn't think so.
a0d0e21e
LW
4711
4712=item seteuid() not implemented
4713
be771a83
GS
4714(F) You tried to assign to C<< $> >>, and your operating system doesn't
4715support the seteuid() system call (or equivalent), or at least Configure
4716didn't think so.
a0d0e21e 4717
81777298
GS
4718=item setpgrp can't take arguments
4719
be771a83
GS
4720(F) Your system has the setpgrp() from BSD 4.2, which takes no
4721arguments, unlike POSIX setpgid(), which takes a process ID and process
4722group ID.
81777298 4723
a0d0e21e
LW
4724=item setrgid() not implemented
4725
be771a83
GS
4726(F) You tried to assign to C<$(>, and your operating system doesn't
4727support the setrgid() system call (or equivalent), or at least Configure
4728didn't think so.
a0d0e21e
LW
4729
4730=item setruid() not implemented
4731
be771a83
GS
4732(F) You tried to assign to C<$<>, and your operating system doesn't
4733support the setruid() system call (or equivalent), or at least Configure
4734didn't think so.
a0d0e21e 4735
6df41af2
GS
4736=item setsockopt() on closed socket %s
4737
be771a83
GS
4738(W closed) You tried to set a socket option on a closed socket. Did you
4739forget to check the return value of your socket() call? See
6df41af2
GS
4740L<perlfunc/setsockopt>.
4741
a0d0e21e
LW
4742=item shm%s not implemented
4743
4744(F) You don't have System V shared memory IPC on your system.
4745
984200d0
YST
4746=item !=~ should be !~
4747
4748(W syntax) The non-matching operator is !~, not !=~. !=~ will be
4749interpreted as the != (numeric not equal) and ~ (1's complement)
4750operators: probably not what you intended.
4751
6df41af2
GS
4752=item <> should be quotes
4753
4754(F) You wrote C<< require <file> >> when you should have written
4755C<require 'file'>.
4756
4757=item /%s/ should probably be written as "%s"
4758
4759(W syntax) You have used a pattern where Perl expected to find a string,
be771a83
GS
4760as in the first argument to C<join>. Perl will treat the true or false
4761result of matching the pattern against $_ as the string, which is
4762probably not what you had in mind.
6df41af2 4763
69282e91 4764=item shutdown() on closed socket %s
a0d0e21e 4765
75b44862
GS
4766(W closed) You tried to do a shutdown on a closed socket. Seems a bit
4767superfluous.
a0d0e21e 4768
f86702cc 4769=item SIG%s handler "%s" not defined
a0d0e21e 4770
be771a83
GS
4771(W signal) The signal handler named in %SIG doesn't, in fact, exist.
4772Perhaps you put it into the wrong package?
a0d0e21e 4773
efc859fb
FC
4774=item Slab leaked from cv %p
4775
4776(S) If you see this message, then something is seriously wrong with the
4777internal bookkeeping of op trees. An op tree needed to be freed after
4778a compilation error, but could not be found, so it was leaked instead.
4779
3b9aea04
SH
4780=item sleep(%u) too large
4781
4782(W overflow) You called C<sleep> with a number that was larger than
4783it can reliably handle and C<sleep> probably slept for less time than
4784requested.
4785
675fa9ff
FC
4786=item Smart matching a non-overloaded object breaks encapsulation
4787
4788(F) You should not use the C<~~> operator on an object that does not
4789overload it: Perl refuses to use the object's underlying structure
4790for the smart match.
4791
0f539b13
BF
4792=item Smartmatch is experimental
4793
4794(S experimental::smartmatch) This warning is emitted if you
4795use the smartmatch (C<~~>) operator. This is currently an experimental
4796feature, and its details are subject to change in future releases of
4797Perl. Particularly, its current behavior is noticed for being
4798unnecessarily complex and unintuitive, and is very likely to be
4799overhauled.
4800
a0d0e21e
LW
4801=item sort is now a reserved word
4802
4803(F) An ancient error message that almost nobody ever runs into anymore.
4804But before sort was a keyword, people sometimes used it as a filehandle.
4805
a0d0e21e
LW
4806=item Sort subroutine didn't return single value
4807
d747172a
FC
4808(F) A sort comparison subroutine written in XS must return exactly one
4809item. See L<perlfunc/sort>.
a0d0e21e 4810
f1c31c52
FC
4811=item Source filters apply only to byte streams
4812
4813(F) You tried to activate a source filter (usually by loading a
4814source filter module) within a string passed to C<eval>. This is
4815not permitted under the C<unicode_eval> feature. Consider using
4816C<evalbytes> instead. See L<feature>.
4817
8cbc2e3b
JH
4818=item splice() offset past end of array
4819
4820(W misc) You attempted to specify an offset that was past the end of
fa816bf3
FC
4821the array passed to splice(). Splicing will instead commence at the
4822end of the array, rather than past it. If this isn't what you want,
4823try explicitly pre-extending the array by assigning $#array = $offset.
4824See L<perlfunc/splice>.
8cbc2e3b 4825
a0d0e21e
LW
4826=item Split loop
4827
be771a83
GS
4828(P) The split was looping infinitely. (Obviously, a split shouldn't
4829iterate more times than there are characters of input, which is what
6903afa2 4830happened.) See L<perlfunc/split>.
a0d0e21e 4831
a0d0e21e
LW
4832=item Statement unlikely to be reached
4833
be771a83
GS
4834(W exec) You did an exec() with some statement after it other than a
4835die(). This is almost always an error, because exec() never returns
4836unless there was a failure. You probably wanted to use system()
4837instead, which does return. To suppress this warning, put the exec() in
4838a block by itself.
a0d0e21e 4839
a2e39214
FC
4840=item "state %s" used in sort comparison
4841
4842(W syntax) The package variables $a and $b are used for sort comparisons.
4843You used $a or $b in as an operand to the C<< <=> >> or C<cmp> operator inside a
4844sort comparison block, and the variable had earlier been declared as a
4845lexical variable. Either qualify the sort variable with the package
4846name, or rename the lexical variable.
4847
5a25739d
FC
4848=item "state" variable %s can't be in a package
4849
4850(F) Lexically scoped variables aren't in a package, so it doesn't make
4851sense to try to declare one with a package qualifier on the front. Use
4852local() if you want to localize a package variable.
4853
9ddeeac9 4854=item stat() on unopened filehandle %s
6df41af2 4855
355b1299
JH
4856(W unopened) You tried to use the stat() function on a filehandle that
4857was either never opened or has since been closed.
6df41af2 4858
5a25739d
FC
4859=item Strings with code points over 0xFF may not be mapped into in-memory file handles
4860
4861(W utf8) You tried to open a reference to a scalar for read or append
4862where the scalar contained code points over 0xFF. In-memory files
4863model on-disk files and can only contain bytes.
4864
fe13d51d 4865=item Stub found while resolving method "%s" overloading "%s" in package "%s"
e7ea3e70 4866
be771a83
GS
4867(P) Overloading resolution over @ISA tree may be broken by importation
4868stubs. Stubs should never be implicitly created, but explicit calls to
4869C<can> may break this.
e7ea3e70 4870
4e85e1b4
FC
4871=item Subroutine "&%s" is not available
4872
4873(W closure) During compilation, an inner named subroutine or eval is
4874attempting to capture an outer lexical subroutine that is not currently
4875available. This can happen for one of two reasons. First, the lexical
4876subroutine may be declared in an outer anonymous subroutine that has not
4877yet been created. (Remember that named subs are created at compile time,
4878while anonymous subs are created at run-time.) For example,
4879
4880 sub { my sub a {...} sub f { \&a } }
4881
4882At the time that f is created, it can't capture the current the "a" sub,
4883since the anonymous subroutine hasn't been created yet. Conversely, the
4884following won't give a warning since the anonymous subroutine has by now
4885been created and is live:
4886
4887 sub { my sub a {...} eval 'sub f { \&a }' }->();
4888
4889The second situation is caused by an eval accessing a variable that has
4890gone out of scope, for example,
4891
4892 sub f {
4893 my sub a {...}
4894 sub { eval '\&a' }
4895 }
4896 f()->();
4897
4898Here, when the '\&a' in the eval is being compiled, f() is not currently
4899being executed, so its &a is not available for capture.
4900
4eb94d7c
FC
4901=item "%s" subroutine &%s masks earlier declaration in same %s
4902
4903(W misc) A "my" or "state" subroutine has been redeclared in the
4904current scope or statement, effectively eliminating all access to
4905the previous instance. This is almost always a typographical error.
4906Note that the earlier subroutine will still exist until the end of
20d33786 4907the scope or until all closure references to it are destroyed.
4eb94d7c 4908
a0d0e21e
LW
4909=item Subroutine %s redefined
4910
e476b1b5 4911(W redefine) You redefined a subroutine. To suppress this warning, say
a0d0e21e
LW
4912
4913 {
271595cc 4914 no warnings 'redefine';
a0d0e21e
LW
4915 eval "sub name { ... }";
4916 }
4917
4918=item Substitution loop
4919
be771a83
GS
4920(P) The substitution was looping infinitely. (Obviously, a substitution
4921shouldn't iterate more times than there are characters of input, which
4922is what happened.) See the discussion of substitution in
5d44bfff 4923L<perlop/"Regexp Quote-Like Operators">.
a0d0e21e
LW
4924
4925=item Substitution pattern not terminated
4926
d1be9408 4927(F) The lexer couldn't find the interior delimiter of an s/// or s{}{}
a0d0e21e 4928construct. Remember that bracketing delimiters count nesting level.
fb73857a 4929Missing the leading C<$> from variable C<$s> may cause this error.
a0d0e21e
LW
4930
4931=item Substitution replacement not terminated
4932
d1be9408 4933(F) The lexer couldn't find the final delimiter of an s/// or s{}{}
a0d0e21e 4934construct. Remember that bracketing delimiters count nesting level.
fb73857a 4935Missing the leading C<$> from variable C<$s> may cause this error.
a0d0e21e
LW
4936
4937=item substr outside of string
4938
8a9eb13d 4939(W substr)(F) You tried to reference a substr() that pointed outside of
be771a83
GS
4940a string. That is, the absolute value of the offset was larger than the
4941length of the string. See L<perlfunc/substr>. This warning is fatal if
4942substr is used in an lvalue context (as the left hand side of an
4943assignment or as a subroutine argument for example).
a0d0e21e 4944
bf1320bf
RGS
4945=item sv_upgrade from type %d down to type %d
4946
9d277376 4947(P) Perl tried to force the upgrade of an SV to a type which was actually
bf1320bf
RGS
4948inferior to its current type.
4949
05a40652
FC
4950=item SWASHNEW didn't return an HV ref
4951
4952(P) Something went wrong internally when Perl was trying to look up
4953Unicode characters.
4954
6fbc9859
MH
4955=item Switch (?(condition)... contains too many branches in regex; marked by
4956<-- HERE in m/%s/
b45f050a 4957
fa816bf3
FC
4958(F) A (?(condition)if-clause|else-clause) construct can have at most
4959two branches (the if-clause and the else-clause). If you want one or
4960both to contain alternation, such as using C<this|that|other>, enclose
4961it in clustering parentheses:
b45f050a
JF
4962
4963 (?(condition)(?:this|that|other)|else-clause)
4964
9e3ec65c 4965The <-- HERE shows whereabouts in the regular expression the problem
fa816bf3 4966was discovered. See L<perlre>.
b45f050a 4967
49704364 4968=item Switch condition not recognized in regex; marked by <-- HERE in m/%s/
b45f050a 4969
39ef1de7 4970(F) If the argument to the (?(...)if-clause|else-clause) construct is
9e3ec65c
FC
4971a number, it can be only a number. The <-- HERE shows whereabouts in
4972the regular expression the problem was discovered. See L<perlre>.
b45f050a 4973
85ab1d1d
JH
4974=item switching effective %s is not implemented
4975
be771a83
GS
4976(F) While under the C<use filetest> pragma, we cannot switch the real
4977and effective uids or gids.
85ab1d1d 4978
ae7df085 4979=item %s syntax OK
2f7da168
RK
4980
4981(F) The final summary message when a C<perl -c> succeeds.
4982
a0d0e21e
LW
4983=item syntax error
4984
4985(F) Probably means you had a syntax error. Common reasons include:
4986
4987 A keyword is misspelled.
4988 A semicolon is missing.
4989 A comma is missing.
4990 An opening or closing parenthesis is missing.
4991 An opening or closing brace is missing.
4992 A closing quote is missing.
4993
4994Often there will be another error message associated with the syntax
4995error giving more information. (Sometimes it helps to turn on B<-w>.)
4996The error message itself often tells you where it was in the line when
4997it decided to give up. Sometimes the actual error is several tokens
5f05dabc 4998before this, because Perl is good at understanding random input.
a0d0e21e
LW
4999Occasionally the line number may be misleading, and once in a blue moon
5000the only way to figure out what's triggering the error is to call
5001C<perl -c> repeatedly, chopping away half the program each time to see
524e9188 5002if the error went away. Sort of the cybernetic version of S<20 questions>.
a0d0e21e 5003
ccf3535a 5004=item syntax error at line %d: '%s' unexpected
cb1a09d0 5005
be771a83
GS
5006(A) You've accidentally run your script through the Bourne shell instead
5007of Perl. Check the #! line, or manually feed your script into Perl
5008yourself.
cb1a09d0 5009
25f58aea
PN
5010=item syntax error in file %s at line %d, next 2 tokens "%s"
5011
5012(F) This error is likely to occur if you run a perl5 script through
5013a perl4 interpreter, especially if the next 2 tokens are "use strict"
5014or "my $var" or "our $var".
5015
675fa9ff
FC
5016=item Syntax error in (?[...]) in regex m/%s/
5017
5018(F) Perl could not figure out what you meant inside this construct; this
5019notifies you that it is giving up trying.
5020
b5fe5ca2
SR
5021=item sysread() on closed filehandle %s
5022
5023(W closed) You tried to read from a closed filehandle.
5024
5025=item sysread() on unopened filehandle %s
5026
5027(W unopened) You tried to read from a filehandle that was never opened.
5028
6087ac44 5029=item System V %s is not implemented on this machine
a0d0e21e 5030
6087ac44
JH
5031(F) You tried to do something with a function beginning with "sem",
5032"shm", or "msg" but that System V IPC is not implemented in your
5033machine. In some machines the functionality can exist but be
5034unconfigured. Consult your system support.
a0d0e21e 5035
69282e91 5036=item syswrite() on closed filehandle %s
a0d0e21e 5037
be771a83 5038(W closed) The filehandle you're writing to got itself closed sometime
c289d2f7 5039before now. Check your control flow.
a0d0e21e 5040
96ebfdd7
RK
5041=item C<-T> and C<-B> not implemented on filehandles
5042
5043(F) Perl can't peek at the stdio buffer of filehandles when it doesn't
5044know about your kind of stdio. You'll have to use a filename instead.
5045
fc36a67e 5046=item Target of goto is too deeply nested
5047
be771a83
GS
5048(F) You tried to use C<goto> to reach a label that was too deeply nested
5049for Perl to reach. Perl is doing you a favor by refusing.
fc36a67e 5050
abc7ecad
SP
5051=item telldir() attempted on invalid dirhandle %s
5052
5053(W io) The dirhandle you tried to telldir() is either closed or not really
5054a dirhandle. Check your control flow.
5055
c2771421
FC
5056=item tell() on unopened filehandle
5057
5058(W unopened) You tried to use the tell() function on a filehandle that
5059was either never opened or has since been closed.
5060
b82b06b8
FC
5061=item That use of $[ is unsupported
5062
5063(F) Assignment to C<$[> is now strictly circumscribed, and interpreted
5064as a compiler directive. You may say only one of
5065
5066 $[ = 0;
5067 $[ = 1;
5068 ...
5069 local $[ = 0;
5070 local $[ = 1;
5071 ...
5072
5073This is to prevent the problem of one module changing the array base out
5074from under another module inadvertently. See L<perlvar/$[> and L<arybase>.
5075
67b16946 5076=item The crypt() function is unimplemented due to excessive paranoia.
a0d0e21e
LW
5077
5078(F) Configure couldn't find the crypt() function on your machine,
5079probably because your vendor didn't supply it, probably because they
8b1a09fc 5080think the U.S. Government thinks it's a secret, or at least that they
a0d0e21e
LW
5081will continue to pretend that it is. And if you quote me on that, I
5082will deny it.
5083
675fa9ff
FC
5084=item The %s feature is experimental
5085
5086(S experimental) This warning is emitted if you enable an experimental
5087feature via C<use feature>. Simply suppress the warning if you want
5088to use the feature, but know that in doing so you are taking the risk
5089of using an experimental feature which may change or be removed in a
5090future Perl version:
5091
5092 no warnings "experimental::lexical_subs";
5093 use feature "lexical_subs";
5094
5095=item The %s function is unimplemented
5096
5097(F) The function indicated isn't implemented on this architecture,
5098according to the probings of Configure.
5099
64fbf0dd 5100=item The lexical_subs feature is experimental
ebd25686 5101
64fbf0dd
FC
5102(S experimental::lexical_subs) This warning is emitted if you
5103declare a sub with C<my> or C<state>. Simply suppress the warning
5104if you want to use the feature, but know that in doing so you
5105are taking the risk of using an experimental feature which may
5106change or be removed in a future Perl version:
ebd25686 5107
f1d34ca8 5108 no warnings "experimental::lexical_subs";
ebd25686 5109 use feature "lexical_subs";
64fbf0dd 5110 my sub foo { ... }
ebd25686 5111
0d0b4b3b
KW
5112=item The regex_sets feature is experimental
5113
5114(S experimental::regex_sets) This warning is emitted if you
5115use the syntax S<C<(?[ ])>> in a regular expression.
5116The details of this feature are subject to change.
5117if you want to use it, but know that in doing so you
5118are taking the risk of using an experimental feature which may
5119change in a future Perl version, you can do this to silence the
5120warning:
5121
5122 no warnings "experimental::regex_sets";
5123
5e1c7ca2 5124=item The stat preceding %s wasn't an lstat
a0d0e21e 5125
be771a83
GS
5126(F) It makes no sense to test the current stat buffer for symbolic
5127linkhood if the last stat that wrote to the stat buffer already went
5128past the symlink to get to the real file. Use an actual filename
5129instead.
a0d0e21e 5130
371fce9b
DM
5131=item The 'unique' attribute may only be applied to 'our' variables
5132
1108974d 5133(F) This attribute was never supported on C<my> or C<sub> declarations.
371fce9b 5134
437784d6 5135=item This Perl can't reset CRTL environ elements (%s)
f675dbe5
CB
5136
5137=item This Perl can't set CRTL environ elements (%s=%s)
5138
75b44862 5139(W internal) Warnings peculiar to VMS. You tried to change or delete an
be771a83
GS
5140element of the CRTL's internal environ array, but your copy of Perl
5141wasn't built with a CRTL that contained the setenv() function. You'll
5142need to rebuild Perl with a CRTL that does, or redefine
5143F<PERL_ENV_TABLES> (see L<perlvms>) so that the environ array isn't the
5144target of the change to
f675dbe5
CB
5145%ENV which produced the warning.
5146
6a5b4183
YO
5147=item This Perl has not been built with support for randomized hash key traversal but something called Perl_hv_rand_set().
5148
5149(F) Something has attempted to use an internal API call which
5150depends on Perl being compiled with the default support for randomized hash
f26c79ba 5151key traversal, but this Perl has been compiled without it. You should
6a5b4183
YO
5152report this warning to the relevant upstream party, or recompile perl
5153with default options.
5154
6b3c7930
JH
5155=item thread failed to start: %s
5156
4447dfc1 5157(W threads)(S) The entry point function of threads->create() failed for some reason.
6b3c7930 5158
a0d0e21e
LW
5159=item times not implemented
5160
be771a83
GS
5161(F) Your version of the C library apparently doesn't do times(). I
5162suspect you're not running on Unix.
a0d0e21e 5163
6d3b25aa
RGS
5164=item "-T" is on the #! line, it must also be used on the command line
5165
b7e4ecc1
FC
5166(X) The #! line (or local equivalent) in a Perl script contains
5167the B<-T> option (or the B<-t> option), but Perl was not invoked with
5168B<-T> in its command line. This is an error because, by the time
5169Perl discovers a B<-T> in a script, it's too late to properly taint
5170everything from the environment. So Perl gives up.
6d3b25aa
RGS
5171
5172If the Perl script is being executed as a command using the #!
b7e4ecc1
FC
5173mechanism (or its local equivalent), this error can usually be
5174fixed by editing the #! line so that the B<-%c> option is a part of
5175Perl's first argument: e.g. change C<perl -n -%c> to C<perl -%c -n>.
6d3b25aa
RGS
5176
5177If the Perl script is being executed as C<perl scriptname>, then the
fe13d51d 5178B<-%c> option must appear on the command line: C<perl -%c scriptname>.
6d3b25aa 5179
3a2263fe
RGS
5180=item To%s: illegal mapping '%s'
5181
5182(F) You tried to define a customized To-mapping for lc(), lcfirst,
5183uc(), or ucfirst() (or their string-inlined versions), but you
5184specified an illegal mapping.
5185See L<perlunicode/"User-Defined Character Properties">.
5186
49704364
WL
5187=item Too deeply nested ()-groups
5188
1a147d38 5189(F) Your template contains ()-groups with a ridiculously deep nesting level.
49704364 5190
a0d0e21e
LW
5191=item Too few args to syscall
5192
5193(F) There has to be at least one argument to syscall() to specify the
5194system call to call, silly dilly.
5195
96ebfdd7
RK
5196=item Too late for "-%s" option
5197
5198(X) The #! line (or local equivalent) in a Perl script contains the
4ba71d51
FC
5199B<-M>, B<-m> or B<-C> option.
5200
6903afa2
FC
5201In the case of B<-M> and B<-m>, this is an error because those options
5202are not intended for use inside scripts. Use the C<use> pragma instead.
4ba71d51 5203
6903afa2
FC
5204The B<-C> option only works if it is specified on the command line as
5205well (with the same sequence of letters or numbers following). Either
5206specify this option on the command line, or, if your system supports
5207it, make your script executable and run it directly instead of passing
5208it to perl.
96ebfdd7 5209
ddda08b7
GS
5210=item Too late to run %s block
5211
5212(W void) A CHECK or INIT block is being defined during run time proper,
5213when the opportunity to run them has already passed. Perhaps you are
be771a83
GS
5214loading a file with C<require> or C<do> when you should be using C<use>
5215instead. Or perhaps you should put the C<require> or C<do> inside a
5216BEGIN block.
ddda08b7 5217
a0d0e21e
LW
5218=item Too many args to syscall
5219
5f05dabc 5220(F) Perl supports a maximum of only 14 args to syscall().
a0d0e21e
LW
5221
5222=item Too many arguments for %s
5223
5224(F) The function requires fewer arguments than you specified.
5225
6df41af2
GS
5226=item Too many )'s
5227
49704364
WL
5228(A) You've accidentally run your script through B<csh> instead of Perl.
5229Check the #! line, or manually feed your script into Perl yourself.
5230
8c40cb74
NC
5231=item Too many ('s
5232
be771a83
GS
5233(A) You've accidentally run your script through B<csh> instead of Perl.
5234Check the #! line, or manually feed your script into Perl yourself.
6df41af2 5235
7253e4e3 5236=item Trailing \ in regex m/%s/
a0d0e21e 5237
be771a83
GS
5238(F) The regular expression ends with an unbackslashed backslash.
5239Backslash it. See L<perlre>.
a0d0e21e 5240
bd299e29
KW
5241=item Trailing white-space in a charnames alias definition is deprecated
5242
94ec3a20
FC
5243(D deprecated) You defined a character name which ended in a space
5244character. Remove the trailing space(s). Usually these names are
5245defined in the C<:alias> import argument to C<use charnames>, but they
5246could be defined by a translator installed into C<$^H{charnames}>.
bd299e29
KW
5247See L<charnames/CUSTOM ALIASES>.
5248
2c268ad5 5249=item Transliteration pattern not terminated
a0d0e21e
LW
5250
5251(F) The lexer couldn't find the interior delimiter of a tr/// or tr[][]
fb73857a 5252or y/// or y[][] construct. Missing the leading C<$> from variables
5253C<$tr> or C<$y> may cause this error.
a0d0e21e 5254
2c268ad5 5255=item Transliteration replacement not terminated
a0d0e21e 5256
6a36df5d
YST
5257(F) The lexer couldn't find the final delimiter of a tr///, tr[][],
5258y/// or y[][] construct.
a0d0e21e 5259
96ebfdd7
RK
5260=item '%s' trapped by operation mask
5261
5262(F) You tried to use an operator from a Safe compartment in which it's
6903afa2 5263disallowed. See L<Safe>.
96ebfdd7 5264
a0d0e21e
LW
5265=item truncate not implemented
5266
5267(F) Your machine doesn't implement a file truncation mechanism that
5268Configure knows about.
5269
19c481f4
FC
5270=item Type of arg %d to &CORE::%s must be %s
5271
5272(F) The subroutine in question in the CORE package requires its argument
5273to be a hard reference to data of the specified type. Overloading is
5274ignored, so a reference to an object that is not the specified type, but
5275nonetheless has overloading to handle it, will still not be accepted.
5276
a0d0e21e
LW
5277=item Type of arg %d to %s must be %s (not %s)
5278
5279(F) This function requires the argument in that position to be of a
8b1a09fc 5280certain type. Arrays must be @NAME or C<@{EXPR}>. Hashes must be
5281%NAME or C<%{EXPR}>. No implicit dereferencing is allowed--use the
a0d0e21e
LW
5282{EXPR} forms as an explicit dereference. See L<perlref>.
5283
7ac5715b 5284=item Type of argument to %s must be unblessed hashref or arrayref
cba5a3b0 5285
7ac5715b
FC
5286(F) You called C<keys>, C<values> or C<each> with a scalar argument that
5287was not a reference to an unblessed hash or array.
cba5a3b0 5288
eec2d3df
GS
5289=item umask not implemented
5290
be771a83
GS
5291(F) Your machine doesn't implement the umask function and you tried to
5292use it to restrict permissions for yourself (EXPR & 0700).
a0d0e21e
LW
5293
5294=item Unbalanced context: %d more PUSHes than POPs
5295
c632e777 5296(S internal) The exit code detected an internal inconsistency in how
be771a83 5297many execution contexts were entered and left.
a0d0e21e
LW
5298
5299=item Unbalanced saves: %d more saves than restores
5300
4a983e45 5301(S internal) The exit code detected an internal inconsistency in how
be771a83 5302many values were temporarily localized.
a0d0e21e
LW
5303
5304=item Unbalanced scopes: %d more ENTERs than LEAVEs
5305
090cebb2 5306(S internal) The exit code detected an internal inconsistency in how
be771a83 5307many blocks were entered and left.
a0d0e21e 5308
6651ba0b
FC
5309=item Unbalanced string table refcount: (%d) for "%s"
5310
31ff3bd2 5311(S internal) On exit, Perl found some strings remaining in the shared
6651ba0b
FC
5312string table used for copy on write and for hash keys. The entries
5313should have been freed, so this indicates a bug somewhere.
5314
a0d0e21e
LW
5315=item Unbalanced tmps: %d more allocs than frees
5316
2092d7c1 5317(S internal) The exit code detected an internal inconsistency in how
be771a83 5318many mortal scalars were allocated and freed.
a0d0e21e
LW
5319
5320=item Undefined format "%s" called
5321
5322(F) The format indicated doesn't seem to exist. Perhaps it's really in
5323another package? See L<perlform>.
5324
5325=item Undefined sort subroutine "%s" called
5326
be771a83
GS
5327(F) The sort comparison routine specified doesn't seem to exist.
5328Perhaps it's in a different package? See L<perlfunc/sort>.
a0d0e21e
LW
5329
5330=item Undefined subroutine &%s called
5331
be771a83
GS
5332(F) The subroutine indicated hasn't been defined, or if it was, it has
5333since been undefined.
a0d0e21e
LW
5334
5335=item Undefined subroutine called
5336
5337(F) The anonymous subroutine you're trying to call hasn't been defined,
5338or if it was, it has since been undefined.
5339
5340=item Undefined subroutine in sort
5341
be771a83
GS
5342(F) The sort comparison routine specified is declared but doesn't seem
5343to have been defined yet. See L<perlfunc/sort>.
a0d0e21e 5344
4633a7c4
LW
5345=item Undefined top format "%s" called
5346
5347(F) The format indicated doesn't seem to exist. Perhaps it's really in
5348another package? See L<perlform>.
5349
20408e3c
GS
5350=item Undefined value assigned to typeglob
5351
be771a83
GS
5352(W misc) An undefined value was assigned to a typeglob, a la
5353C<*foo = undef>. This does nothing. It's possible that you really mean
5354C<undef *foo>.
20408e3c 5355
6df41af2
GS
5356=item %s: Undefined variable
5357
be771a83
GS
5358(A) You've accidentally run your script through B<csh> instead of Perl.
5359Check the #! line, or manually feed your script into Perl yourself.
6df41af2 5360
a0d0e21e
LW
5361=item unexec of %s into %s failed!
5362
5363(F) The unexec() routine failed for some reason. See your local FSF
5364representative, who probably put it there in the first place.
5365
0d0b4b3b
KW
5366=item Unexpected binary operator '%c' with no preceding operand in regex; marked by <-- HERE in m/%s/
5367
675fa9ff 5368(F) You had something like this:
0d0b4b3b
KW
5369
5370 (?[ | \p{Digit} ])
5371
5372where the C<"|"> is a binary operator with an operand on the right, but
5373no operand on the left.
5374
5375=item Unexpected character in regex; marked by <-- HERE in m/%s/
5376
675fa9ff 5377(F) You had something like this:
0d0b4b3b
KW
5378
5379 (?[ z ])
5380
5381Within C<(?[ ])>, no literal characters are allowed unless they are
5382within an inner pair of square brackets, like
5383
5384 (?[ [ z ] ])
5385
5386Another possibility is that you forgot a backslash. Perl isn't smart
5387enough to figure out what you really meant.
5388
6651ba0b
FC
5389=item Unexpected constant lvalue entersub entry via type/targ %d:%d
5390
5391(P) When compiling a subroutine call in lvalue context, Perl failed an
5392internal consistency check. It encountered a malformed op tree.
5393
675fa9ff
FC
5394=item Unexpected ')' in regex; marked by <-- HERE in m/%s/
5395
5396(F) You had something like this:
5397
5398 (?[ ( \p{Digit} + ) ])
5399
5400The C<")"> is out-of-place. Something apparently was supposed to
5401be combined with the digits, or the C<"+"> shouldn't be there, or
5402something like that. Perl can't figure out what was intended.
5403
5404=item Unexpected '(' with no preceding operator in regex; marked by <-- HERE in m/%s/
5405
5406(F) You had something like this:
5407
5408 (?[ \p{Digit} ( \p{Lao} + \p{Thai} ) ])
5409
5410There should be an operator before the C<"(">, as there's
5411no indication as to how the digits are to be combined
5412with the characters in the Lao and Thai scripts.
5413
0876b9a0
KW
5414=item Unicode non-character U+%X is illegal for open interchange
5415
e2f7b30e 5416(S utf8, nonchar) Certain codepoints, such as U+FFFE and U+FFFF, are
6903afa2
FC
5417defined by the Unicode standard to be non-characters. Those are
5418legal codepoints, but are reserved for internal use; so, applications
5419shouldn't attempt to exchange them. If you know what you are doing
5420you can turn off this warning by C<no warnings 'nonchar';>.
b45f050a 5421
c794c51b
FC
5422=item Unicode surrogate U+%X is illegal in UTF-8
5423
d2bb714f 5424(S utf8, surrogate) You had a UTF-16 surrogate in a context where they are
c794c51b
FC
5425not considered acceptable. These code points, between U+D800 and
5426U+DFFF (inclusive), are used by Unicode only for UTF-16. However, Perl
5427internally allows all unsigned integer code points (up to the size limit
5428available on your platform), including surrogates. But these can cause
5429problems when being input or output, which is likely where this message
5430came from. If you really really know what you are doing you can turn
8457b38f 5431off this warning by C<no warnings 'surrogate';>.
c794c51b 5432
dcfe9e74
KW
5433=item Unknown charname '%s'
5434
5435(F) The name you used inside C<\N{}> is unknown to Perl. Check the
5436spelling. You can say C<use charnames ":loose"> to not have to be
5437so precise about spaces, hyphens, and capitalization on standard Unicode
5438names. (Any custom aliases that have been created must be specified
5439exactly, regardless of whether C<:loose> is used or not.) This error may
5440also happen if the C<\N{}> is not in the scope of the corresponding
5441C<S<use charnames>>.
5442
04177465
FC
5443=item Unknown error
5444
5445(P) Perl was about to print an error message in C<$@>, but the C<$@> variable
5446did not exist, even after an attempt to create it.
5447
6170680b
IZ
5448=item Unknown open() mode '%s'
5449
437784d6 5450(F) The second argument of 3-argument open() is not among the list
c47ff5f1 5451of valid modes: C<< < >>, C<< > >>, C<<< >> >>>, C<< +< >>,
488dad83 5452C<< +> >>, C<<< +>> >>>, C<-|>, C<|->, C<< <& >>, C<< >& >>.
6170680b 5453
b4581f09
JH
5454=item Unknown PerlIO layer "%s"
5455
5456(W layer) An attempt was made to push an unknown layer onto the Perl I/O
5457system. (Layers take care of transforming data between external and
5458internal representations.) Note that some layers, such as C<mmap>,
5459are not supported in all environments. If your program didn't
5460explicitly request the failing operation, it may be the result of the
5461value of the environment variable PERLIO.
5462
f675dbe5
CB
5463=item Unknown process %x sent message to prime_env_iter: %s
5464
5465(P) An error peculiar to VMS. Perl was reading values for %ENV before
5466iterating over it, and someone else stuck a message in the stream of
5467data Perl expected. Someone's very confused, or perhaps trying to
5468subvert Perl's population of %ENV for nefarious purposes.
a05d7ebb 5469
0da72d5e
KW
5470=item Unknown regex modifier "%s"
5471
5472(F) Alphanumerics immediately following the closing delimiter
5473of a regular expression pattern are interpreted by Perl as modifier
5474flags for the regex. One of the ones you specified is invalid. One way
5475this can happen is if you didn't put in white space between the end of
5476the regex and a following alphanumeric operator:
5477
5478 if ($a =~ /foo/and $bar == 3) { ... }
5479
5480The C<"a"> is a valid modifier flag, but the C<"n"> is not, and raises
5481this error. Likely what was meant instead was:
5482
5483 if ($a =~ /foo/ and $bar == 3) { ... }
5484
5a25739d
FC
5485=item Unknown "re" subpragma '%s' (known ones are: %s)
5486
5487(W) You tried to use an unknown subpragma of the "re" pragma.
5488
bcd05b94 5489=item Unknown switch condition (?(%s in regex; marked by <-- HERE in m/%s/
96ebfdd7
RK
5490
5491(F) The condition part of a (?(condition)if-clause|else-clause) construct
6903afa2 5492is not known. The condition must be one of the following:
5fecf430 5493
674f6ed9
FC
5494 (1) (2) ... true if 1st, 2nd, etc., capture matched
5495 (<NAME>) ('NAME') true if named capture matched
5496 (?=...) (?<=...) true if subpattern matches
5497 (?!...) (?<!...) true if subpattern fails to match
5498 (?{ CODE }) true if code returns a true value
5499 (R) true if evaluating inside recursion
5500 (R1) (R2) ... true if directly inside capture group 1, 2, etc.
5501 (R&NAME) true if directly inside named capture
5502 (DEFINE) always false; for defining named subpatterns
96ebfdd7 5503
9e3ec65c 5504The <-- HERE shows whereabouts in the regular expression the problem was
96ebfdd7
RK
5505discovered. See L<perlre>.
5506
a05d7ebb
JH
5507=item Unknown Unicode option letter '%c'
5508
a4a4c9e2 5509(F) You specified an unknown Unicode option. See L<perlrun> documentation
a05d7ebb
JH
5510of the C<-C> switch for the list of known options.
5511
64187737 5512=item Unknown Unicode option value %d
a05d7ebb 5513
a4a4c9e2 5514(F) You specified an unknown Unicode option. See L<perlrun> documentation
a05d7ebb 5515of the C<-C> switch for the list of known options.
f675dbe5 5516
e2e6a0f1
YO
5517=item Unknown verb pattern '%s' in regex; marked by <-- HERE in m/%s/
5518
5519(F) You either made a typo or have incorrectly put a C<*> quantifier
5520after an open brace in your pattern. Check the pattern and review
5521L<perlre> for details on legal verb patterns.
5522
c2771421
FC
5523=item Unknown warnings category '%s'
5524
6903afa2 5525(F) An error issued by the C<warnings> pragma. You specified a warnings
c2771421
FC
5526category that is unknown to perl at this point.
5527
14ef4c80
FC
5528Note that if you want to enable a warnings category registered by a
5529module (e.g. C<use warnings 'File::Find'>), you must have loaded this
5530module first.
c2771421 5531
675fa9ff
FC
5532=item Unmatched '[' in POSIX class in regex; marked by <-- HERE in m/%s/
5533
5534(F) You had something like this:
5535
5536 (?[ [:digit: ])
5537
5538That should be written:
5539
5540 (?[ [:digit:] ])
5541
0d0b4b3b
KW
5542=item Unmatched '%c' in POSIX class in regex; marked by <-- HERE in m/%s/
5543
675fa9ff 5544(F) You had something like this:
0d0b4b3b
KW
5545
5546 (?[ [:alnum] ])
5547
5548There should be a second C<":">, like this:
5549
5550 (?[ [:alnum:] ])
5551
aec0ef10 5552=item Unmatched [ in regex; marked by <-- HERE in m/%s/
6df41af2 5553
6903afa2 5554(F) The brackets around a character class must match. If you wish to
be771a83 5555include a closing bracket in a character class, backslash it or put it
9e3ec65c 5556first. The <-- HERE shows whereabouts in the regular expression the
6903afa2 5557problem was discovered. See L<perlre>.
6df41af2 5558
aec0ef10
FC
5559=item Unmatched ( in regex; marked by <-- HERE in m/%s/
5560
5561=item Unmatched ) in regex; marked by <-- HERE in m/%s/
a0d0e21e
LW
5562
5563(F) Unbackslashed parentheses must always be balanced in regular
6903afa2 5564expressions. If you're a vi user, the % key is valuable for finding
9e3ec65c
FC
5565the matching parenthesis. The <-- HERE shows whereabouts in the
5566regular expression the problem was discovered. See L<perlre>.
a0d0e21e 5567
d98d5fff 5568=item Unmatched right %s bracket
a0d0e21e 5569
be771a83
GS
5570(F) The lexer counted more closing curly or square brackets than opening
5571ones, so you're probably missing a matching opening bracket. As a
5572general rule, you'll find the missing one (so to speak) near the place
5573you were last editing.
a0d0e21e 5574
a0d0e21e
LW
5575=item Unquoted string "%s" may clash with future reserved word
5576
be771a83
GS
5577(W reserved) You used a bareword that might someday be claimed as a
5578reserved word. It's best to put such a word in quotes, or capitalize it
5579somehow, or insert an underbar into it. You might also declare it as a
5580subroutine.
a0d0e21e 5581
b1fc3636 5582=item Unrecognized character %s; marked by <-- HERE after %s near column %d
a0d0e21e 5583
54310121 5584(F) The Perl parser has no idea what to do with the specified character
b1fc3636 5585in your Perl script (or eval) near the specified column. Perhaps you tried
356c7adf 5586to run a compressed script, a binary program, or a directory as a Perl program.
a0d0e21e 5587
0d0b4b3b
KW
5588=item Unrecognized escape \%c in character class in regex; marked by <-- HERE in m/%s/
5589
675fa9ff
FC
5590(F) You used a backslash-character combination which is not
5591recognized by Perl inside character classes. This is a fatal
5592error when the character class is used within C<(?[ ])>.
0d0b4b3b 5593
6fbc9859
MH
5594=item Unrecognized escape \%c in character class passed through in regex;
5595marked by <-- HERE in m/%s/
6df41af2 5596
be771a83
GS
5597(W regexp) You used a backslash-character combination which is not
5598recognized by Perl inside character classes. The character was
b224edc1 5599understood literally, but this may change in a future version of Perl.
9e3ec65c 5600The <-- HERE shows whereabouts in the regular expression the
2628b4e0 5601escape was discovered.
6df41af2 5602
4a68bf9d 5603=item Unrecognized escape \%c passed through
2f7da168 5604
2628b4e0 5605(W misc) You used a backslash-character combination which is not
b224edc1
KW
5606recognized by Perl. The character was understood literally, but this may
5607change in a future version of Perl.
2f7da168 5608
216bfc0a 5609=item Unrecognized escape \%s passed through in regex; marked by <-- HERE in m/%s/
6df41af2 5610
be771a83 5611(W regexp) You used a backslash-character combination which is not
b7e4ecc1 5612recognized by Perl. The character(s) were understood literally, but
9e3ec65c
FC
5613this may change in a future version of Perl. The <-- HERE shows
5614whereabouts in the regular expression the escape was discovered.
6df41af2 5615
a0d0e21e
LW
5616=item Unrecognized signal name "%s"
5617
be771a83
GS
5618(F) You specified a signal name to the kill() function that was not
5619recognized. Say C<kill -l> in your shell to see the valid signal names
5620on your system.
a0d0e21e 5621
90248788 5622=item Unrecognized switch: -%s (-h will show valid options)
a0d0e21e 5623
be771a83
GS
5624(F) You specified an illegal option to Perl. Don't do that. (If you
5625think you didn't do that, check the #! line to see if it's supplying the
5626bad switch on your behalf.)
a0d0e21e
LW
5627
5628=item Unsuccessful %s on filename containing newline
5629
be771a83
GS
5630(W newline) A file operation was attempted on a filename, and that
5631operation failed, PROBABLY because the filename contained a newline,
5b3eff12 5632PROBABLY because you forgot to chomp() it off. See L<perlfunc/chomp>.
a0d0e21e
LW
5633
5634=item Unsupported directory function "%s" called
5635
5636(F) Your machine doesn't support opendir() and readdir().
5637
6df41af2
GS
5638=item Unsupported function %s
5639
5640(F) This machine doesn't implement the indicated function, apparently.
5641At least, Configure doesn't think so.
5642
54310121 5643=item Unsupported function fork
5644
5645(F) Your version of executable does not support forking.
5646
be771a83 5647Note that under some systems, like OS/2, there may be different flavors
6903afa2 5648of Perl executables, some of which may support fork, some not. Try
be771a83 5649changing the name you call Perl by to C<perl_>, C<perl__>, and so on.
54310121 5650
7aa207d6 5651=item Unsupported script encoding %s
b250498f
GS
5652
5653(F) Your program file begins with a Unicode Byte Order Mark (BOM) which
7aa207d6 5654declares it to be in a Unicode encoding that Perl cannot read.
b250498f 5655
a0d0e21e
LW
5656=item Unsupported socket function "%s" called
5657
5658(F) Your machine doesn't support the Berkeley socket mechanism, or at
5659least that's what Configure thought.
5660
6df41af2 5661=item Unterminated attribute list
a0d0e21e 5662
be771a83
GS
5663(F) The lexer found something other than a simple identifier at the
5664start of an attribute, and it wasn't a semicolon or the start of a
5665block. Perhaps you terminated the parameter list of the previous
5666attribute too soon. See L<attributes>.
a0d0e21e 5667
09bef843
SB
5668=item Unterminated attribute parameter in attribute list
5669
be771a83
GS
5670(F) The lexer saw an opening (left) parenthesis character while parsing
5671an attribute list, but the matching closing (right) parenthesis
09bef843
SB
5672character was not found. You may need to add (or remove) a backslash
5673character to get your parentheses to balance. See L<attributes>.
5674
f1991046
GS
5675=item Unterminated compressed integer
5676
5677(F) An argument to unpack("w",...) was incompatible with the BER
5678compressed integer format and could not be converted to an integer.
5679See L<perlfunc/pack>.
5680
6f2d7fc9
FC
5681=item Unterminated delimiter for here document
5682
5683(F) This message occurs when a here document label has an initial
5684quotation mark but the final quotation mark is missing. Perhaps
5685you wrote:
5686
5687 <<"foo
5688
5689instead of:
5690
5691 <<"foo"
5692
779fedd7
KW
5693=item Unterminated \g... pattern in regex; marked by <-- HERE in m/%s/
5694
2bf803e2
YO
5695=item Unterminated \g{...} pattern in regex; marked by <-- HERE in m/%s/
5696
5364049c
KW
5697(F) In a regular expression, you had a C<\g> that wasn't followed by a
5698proper group reference. In the case of C<\g{>, the closing brace is
5699missing; otherwise the C<\g> must be followed by an integer. Fix the
5700pattern and retry.
e2e6a0f1 5701
6df41af2 5702=item Unterminated <> operator
09bef843 5703
6df41af2 5704(F) The lexer saw a left angle bracket in a place where it was expecting
be771a83
GS
5705a term, so it's looking for the corresponding right angle bracket, and
5706not finding it. Chances are you left some needed parentheses out
5707earlier in the line, and you really meant a "less than".
09bef843 5708
905fe053
FC
5709=item Unterminated verb pattern argument in regex; marked by <-- HERE in m/%s/
5710
5711(F) You used a pattern of the form C<(*VERB:ARG)> but did not terminate
6903afa2 5712the pattern with a C<)>. Fix the pattern and retry.
905fe053
FC
5713
5714=item Unterminated verb pattern in regex; marked by <-- HERE in m/%s/
5715
5716(F) You used a pattern of the form C<(*VERB)> but did not terminate
6903afa2 5717the pattern with a C<)>. Fix the pattern and retry.
905fe053 5718
6df41af2 5719=item untie attempted while %d inner references still exist
a0d0e21e 5720
be771a83
GS
5721(W untie) A copy of the object returned from C<tie> (or C<tied>) was
5722still valid when C<untie> was called.
a0d0e21e 5723
8e11cd2b
JC
5724=item Usage: POSIX::%s(%s)
5725
5726(F) You called a POSIX function with incorrect arguments.
5727See L<POSIX/FUNCTIONS> for more information.
5728
5729=item Usage: Win32::%s(%s)
5730
5731(F) You called a Win32 function with incorrect arguments.
5732See L<Win32> for more information.
5733
89474f50
FC
5734=item $[ used in %s (did you mean $] ?)
5735
5736(W syntax) You used C<$[> in a comparison, such as:
5737
5738 if ($[ > 5.006) {
5739 ...
5740 }
5741
5742You probably meant to use C<$]> instead. C<$[> is the base for indexing
5743arrays. C<$]> is the Perl version number in decimal.
5744
8fe85e3f
FC
5745=item Useless assignment to a temporary
5746
5747(W misc) You assigned to an lvalue subroutine, but what
5748the subroutine returned was a temporary scalar about to
5749be discarded, so the assignment had no effect.
5750
6fbc9859
MH
5751=item Useless (?-%s) - don't use /%s modifier in regex; marked by <-- HERE in
5752m/%s/
9d1d55b5 5753
96ebfdd7
RK
5754(W regexp) You have used an internal modifier such as (?-o) that has no
5755meaning unless removed from the entire regexp:
9d1d55b5 5756
96ebfdd7 5757 if ($string =~ /(?-o)$pattern/o) { ... }
9d1d55b5
JP
5758
5759must be written as
5760
96ebfdd7 5761 if ($string =~ /$pattern/) { ... }
9d1d55b5 5762
9e3ec65c
FC
5763The <-- HERE shows whereabouts in the regular expression the problem was
5764discovered. See L<perlre>.
9d1d55b5 5765
b4581f09
JH
5766=item Useless localization of %s
5767
6903afa2
FC
5768(W syntax) The localization of lvalues such as C<local($x=10)> is legal,
5769but in fact the local() currently has no effect. This may change at
b4581f09
JH
5770some point in the future, but in the meantime such code is discouraged.
5771
96ebfdd7 5772=item Useless (?%s) - use /%s modifier in regex; marked by <-- HERE in m/%s/
9d1d55b5 5773
96ebfdd7
RK
5774(W regexp) You have used an internal modifier such as (?o) that has no
5775meaning unless applied to the entire regexp:
9d1d55b5 5776
96ebfdd7 5777 if ($string =~ /(?o)$pattern/) { ... }
9d1d55b5
JP
5778
5779must be written as
5780
96ebfdd7 5781 if ($string =~ /$pattern/o) { ... }
9d1d55b5 5782
9e3ec65c
FC
5783The <-- HERE shows whereabouts in the regular expression the problem was
5784discovered. See L<perlre>.
9d1d55b5 5785
b08e453b
RB
5786=item Useless use of /d modifier in transliteration operator
5787
5788(W misc) You have used the /d modifier where the searchlist has the
6903afa2 5789same length as the replacelist. See L<perlop> for more information
b08e453b
RB
5790about the /d modifier.
5791
4d68ffa0
KW
5792=item Useless use of '\'; doesn't escape metacharacter '%c'
5793
5794(D deprecated) You wrote a regular expression pattern something like
5795one of these:
5796
5797 m{ \x\{FF\} }x
5798 m{foo\{1,3\}}
5799 qr(foo\(bar\))
5800 s[foo\[a-z\]bar][baz]
5801
5802The interior braces, square brackets, and parentheses are treated as
5803metacharacters even though they are backslashed; instead write:
5804
5805 m{ \x{FF} }x
5806 m{foo{1,3}}
5807 qr(foo(bar))
5808 s[foo[a-z]bar][baz]
5809
5810The backslashes have no effect when a regular expression pattern is
50a39ba4 5811delimited by C<{}>, C<[]>, or C<()>, which ordinarily are
4d68ffa0
KW
5812metacharacters, and the delimiters are also used, paired, within the
5813interior of the pattern. It is planned that a future Perl release will
5814change the meaning of constructs like these so that the backslashes
5815will have an effect, so remove them from your code.
5816
820438b1
FC
5817=item Useless use of \E
5818
5819(W misc) You have a \E in a double-quotish string without a C<\U>,
5820C<\L> or C<\Q> preceding it.
5821
6df41af2 5822=item Useless use of %s in void context
a0d0e21e 5823
75b44862 5824(W void) You did something without a side effect in a context that does
be771a83
GS
5825nothing with the return value, such as a statement that doesn't return a
5826value from a block, or the left side of a scalar comma operator. Very
5827often this points not to stupidity on your part, but a failure of Perl
5828to parse your program the way you thought it would. For example, you'd
5829get this if you mixed up your C precedence with Python precedence and
5830said
a0d0e21e 5831
6df41af2 5832 $one, $two = 1, 2;
748a9306 5833
6df41af2
GS
5834when you meant to say
5835
5836 ($one, $two) = (1, 2);
5837
5838Another common error is to use ordinary parentheses to construct a list
5839reference when you should be using square or curly brackets, for
5840example, if you say
5841
5842 $array = (1,2);
5843
5844when you should have said
5845
5846 $array = [1,2];
5847
5848The square brackets explicitly turn a list value into a scalar value,
5849while parentheses do not. So when a parenthesized list is evaluated in
5850a scalar context, the comma is treated like C's comma operator, which
5851throws away the left argument, which is not what you want. See
5852L<perlref> for more on this.
5853
65191a1e
BS
5854This warning will not be issued for numerical constants equal to 0 or 1
5855since they are often used in statements like
5856
4358a253 5857 1 while sub_with_side_effects();
65191a1e
BS
5858
5859String constants that would normally evaluate to 0 or 1 are warned
5860about.
5861
675fa9ff
FC
5862=item Useless use of (?-p) in regex; marked by <-- HERE in m/%s/
5863
5864(W regexp) The C<p> modifier cannot be turned off once set. Trying to do
5865so is futile.
5866
6df41af2
GS
5867=item Useless use of "re" pragma
5868
6903afa2 5869(W) You did C<use re;> without any arguments. That isn't very useful.
6df41af2 5870
a801c63c
RGS
5871=item Useless use of sort in scalar context
5872
5873(W void) You used sort in scalar context, as in :
5874
5875 my $x = sort @y;
5876
5877This is not very useful, and perl currently optimizes this away.
5878
de4864e4
JH
5879=item Useless use of %s with no values
5880
f87c3213 5881(W syntax) You used the push() or unshift() function with no arguments
6903afa2
FC
5882apart from the array, like C<push(@x)> or C<unshift(@foo)>. That won't
5883usually have any effect on the array, so is completely useless. It's
de4864e4 5884possible in principle that push(@tied_array) could have some effect
6903afa2 5885if the array is tied to a class which implements a PUSH method. If so,
de4864e4
JH
5886you can write it as C<push(@tied_array,())> to avoid this warning.
5887
6df41af2
GS
5888=item "use" not allowed in expression
5889
be771a83
GS
5890(F) The "use" keyword is recognized and executed at compile time, and
5891returns no useful value. See L<perlmod>.
748a9306 5892
36b2db7e
FC
5893=item Use of assignment to $[ is deprecated
5894
5895(D deprecated) The C<$[> variable (index of the first element in an array)
6903afa2 5896is deprecated. See L<perlvar/"$[">.
36b2db7e 5897
c47ff5f1 5898=item Use of bare << to mean <<"" is deprecated
4633a7c4 5899
8ab8f082 5900(D deprecated) You are now encouraged to use the explicitly quoted
83ce3e12
RGS
5901form if you wish to use an empty line as the terminator of the here-document.
5902
5903=item Use of comma-less variable list is deprecated
5904
8ab8f082 5905(D deprecated) The values you give to a format should be
83ce3e12 5906separated by commas, not just aligned on a line.
4633a7c4 5907
96ebfdd7
RK
5908=item Use of chdir('') or chdir(undef) as chdir() deprecated
5909
5910(D deprecated) chdir() with no arguments is documented to change to
5911$ENV{HOME} or $ENV{LOGDIR}. chdir(undef) and chdir('') share this
5912behavior, but that has been deprecated. In future versions they
5913will simply fail.
5914
5915Be careful to check that what you pass to chdir() is defined and not
5916blank, else you might find yourself in your home directory.
5917
64e578a2
MJD
5918=item Use of /c modifier is meaningless in s///
5919
5920(W regexp) You used the /c modifier in a substitution. The /c
5921modifier is not presently meaningful in substitutions.
5922
4ac733c9
MJD
5923=item Use of /c modifier is meaningless without /g
5924
5925(W regexp) You used the /c modifier with a regex operand, but didn't
5926use the /g modifier. Currently, /c is meaningful only when /g is
5927used. (This may change in the future.)
5928
675fa9ff
FC
5929=item Use of each() on hash after insertion without resetting hash iterator results in undefined behavior
5930
f26c79ba
FC
5931(S internal) The behavior of C<each()> after insertion is undefined;
5932it may skip items, or visit items more than once. Consider using
5933C<keys()> instead of C<each()>.
675fa9ff 5934
2dc78664 5935=item Use of := for an empty attribute list is not allowed
036e1e65 5936
2dc78664
NC
5937(F) The construction C<my $x := 42> used to parse as equivalent to
5938C<my $x : = 42> (applying an empty attribute list to C<$x>).
5939This construct was deprecated in 5.12.0, and has now been made a syntax
5940error, so C<:=> can be reclaimed as a new operator in the future.
5941
5942If you need an empty attribute list, for example in a code generator, add
5943a space before the C<=>.
036e1e65 5944
b6c83531 5945=item Use of freed value in iteration
2f7da168 5946
b6c83531
JH
5947(F) Perhaps you modified the iterated array within the loop?
5948This error is typically caused by code like the following:
2f7da168
RK
5949
5950 @a = (3,4);
5951 @a = () for (1,2,@a);
5952
5953You are not supposed to modify arrays while they are being iterated over.
5954For speed and efficiency reasons, Perl internally does not do full
5955reference-counting of iterated items, hence deleting such an item in the
5956middle of an iteration causes Perl to see a freed value.
5957
39b99f21 5958=item Use of *glob{FILEHANDLE} is deprecated
5959
5960(D deprecated) You are now encouraged to use the shorter *glob{IO} form
5961to access the filehandle slot within a typeglob.
5962
96ebfdd7 5963=item Use of /g modifier is meaningless in split
35ae6b54 5964
96ebfdd7
RK
5965(W regexp) You used the /g modifier on the pattern for a C<split>
5966operator. Since C<split> always tries to match the pattern
5967repeatedly, the C</g> has no effect.
35ae6b54 5968
0b98bec9
RGS
5969=item Use of "goto" to jump into a construct is deprecated
5970
5971(D deprecated) Using C<goto> to jump from an outer scope into an inner
5972scope is deprecated and should be avoided.
5973
dc848c6f 5974=item Use of inherited AUTOLOAD for non-method %s() is deprecated
5975
1da25648
FC
5976(D deprecated) As an (ahem) accidental feature, C<AUTOLOAD>
5977subroutines are looked up as methods (using the C<@ISA> hierarchy)
5978even when the subroutines to be autoloaded were called as plain
5979functions (e.g. C<Foo::bar()>), not as methods (e.g. C<< Foo->bar() >> or
5980C<< $obj->bar() >>).
dc848c6f 5981
be771a83
GS
5982This bug will be rectified in future by using method lookup only for
5983methods' C<AUTOLOAD>s. However, there is a significant base of existing
5984code that may be using the old behavior. So, as an interim step, Perl
5985currently issues an optional warning when non-methods use inherited
5986C<AUTOLOAD>s.
dc848c6f 5987
5988The simple rule is: Inheritance will not work when autoloading
be771a83
GS
5989non-methods. The simple fix for old code is: In any module that used
5990to depend on inheriting C<AUTOLOAD> for non-methods from a base class
5991named C<BaseClass>, execute C<*AUTOLOAD = \&BaseClass::AUTOLOAD> during
5992startup.
dc848c6f 5993
be771a83
GS
5994In code that currently says C<use AutoLoader; @ISA = qw(AutoLoader);>
5995you should remove AutoLoader from @ISA and change C<use AutoLoader;> to
7b8d334a 5996C<use AutoLoader 'AUTOLOAD';>.
fb73857a 5997
6df41af2
GS
5998=item Use of %s in printf format not supported
5999
6000(F) You attempted to use a feature of printf that is accessible from
6001only C. This usually means there's a better way to do it in Perl.
6002
6df41af2
GS
6003=item Use of %s is deprecated
6004
75b44862 6005(D deprecated) The construct indicated is no longer recommended for use,
be771a83
GS
6006generally because there's a better way to do it, and also because the
6007old way has bad side effects.
6df41af2 6008
5840701a 6009=item Use of -l on filehandle%s
5a7abfcc
FC
6010
6011(W io) A filehandle represents an opened file, and when you opened the file
6012it already went past any symlink you are presumably trying to look for.
6013The operation returned C<undef>. Use a filename instead.
6014
4055dbce
RS
6015=item Use of my $_ is experimental
6016
6017(S experimental::lexical_topic) Lexical $_ is an experimental feature and
6018its behavior may change or even be removed in any future release of perl.
6019See the explanation under L<perlvar/$_>.
6020
7c7df812
FC
6021=item Use of %s on a handle without * is deprecated
6022
22d6fc57 6023(D deprecated) You used C<tie>, C<tied> or C<untie> on a scalar but that scalar
fa816bf3 6024happens to hold a typeglob, which means its filehandle will be tied. If
22d6fc57
FC
6025you mean to tie a handle, use an explicit * as in C<tie *$handle>.
6026
6027This was a long-standing bug that was removed in Perl 5.16, as there was
6028no way to tie the scalar itself when it held a typeglob, and no way to
6029untie a scalar that had had a typeglob assigned to it. If you see this
6030message, you must be using an older version.
7c7df812 6031
905fe053
FC
6032=item Use of ?PATTERN? without explicit operator is deprecated
6033
6034(D deprecated) You have written something like C<?\w?>, for a regular
6035expression that matches only once. Starting this term directly with
6036the question mark delimiter is now deprecated, so that the question mark
6037will be available for use in new operators in the future. Write C<m?\w?>
6038instead, explicitly using the C<m> operator: the question mark delimiter
6039still invokes match-once behaviour.
6040
1f1cc344 6041=item Use of reference "%s" as array index
d804643f 6042
77b96956 6043(W misc) You tried to use a reference as an array index; this probably
1f1cc344
JH
6044isn't what you mean, because references in numerical context tend
6045to be huge numbers, and so usually indicates programmer error.
d804643f 6046
64977eb6 6047If you really do mean it, explicitly numify your reference, like so:
1f1cc344 6048C<$array[0+$ref]>. This warning is not given for overloaded objects,
54e0f05c 6049however, because you can overload the numification and stringification
c69ca1d4 6050operators and then you presumably know what you are doing.
d804643f 6051
4055dbce
RS
6052=item Use of state $_ is experimental
6053
6054(S experimental::lexical_topic) Lexical $_ is an experimental feature and
6055its behavior may change or even be removed in any future release of perl.
6056See the explanation under L<perlvar/$_>.
6057
bbd7eb8a
RD
6058=item Use of tainted arguments in %s is deprecated
6059
159f47d9 6060(W taint, deprecated) You have supplied C<system()> or C<exec()> with multiple
bbd7eb8a
RD
6061arguments and at least one of them is tainted. This used to be allowed
6062but will become a fatal error in a future version of perl. Untaint your
6063arguments. See L<perlsec>.
6064
cc95b072 6065=item Use of uninitialized value%s
a0d0e21e 6066
be771a83
GS
6067(W uninitialized) An undefined value was used as if it were already
6068defined. It was interpreted as a "" or a 0, but maybe it was a mistake.
6069To suppress this warning assign a defined value to your variables.
a0d0e21e 6070
6903afa2
FC
6071To help you figure out what was undefined, perl will try to tell you
6072the name of the variable (if any) that was undefined. In some cases
6073it cannot do this, so it also tells you what operation you used the
6074undefined value in. Note, however, that perl optimizes your program
50a39ba4 6075and the operation displayed in the warning may not necessarily appear
6903afa2
FC
6076literally in your program. For example, C<"that $foo"> is usually
6077optimized into C<"that " . $foo>, and the warning will refer to the
6078C<concatenation (.)> operator, even though there is no C<.> in
6079your program.
e5be4a53 6080
675fa9ff
FC
6081=item Use \x{...} for more than two hex characters in regex; marked by <-- HERE in m/%s/
6082
6083(F) In a regular expression, you said something like
6084
6085 (?[ [ \xBEEF ] ])
6086
6087Perl isn't sure if you meant this
6088
6089 (?[ [ \x{BEEF} ] ])
6090
6091or if you meant this
6092
6093 (?[ [ \x{BE} E F ] ])
6094
6095You need to add either braces or blanks to disambiguate.
6096
a1063b2d
RH
6097=item Using a hash as a reference is deprecated
6098
496a33f5 6099(D deprecated) You tried to use a hash as a reference, as in
1b1f1335 6100C<< %foo->{"bar"} >> or C<< %$ref->{"hello"} >>. Versions of perl <= 5.6.1
6903afa2
FC
6101used to allow this syntax, but shouldn't have. It is now
6102deprecated, and will be removed in a future version.
a1063b2d
RH
6103
6104=item Using an array as a reference is deprecated
6105
496a33f5 6106(D deprecated) You tried to use an array as a reference, as in
1b1f1335 6107C<< @foo->[23] >> or C<< @$ref->[99] >>. Versions of perl <= 5.6.1 used to
6903afa2
FC
6108allow this syntax, but shouldn't have. It is now deprecated,
6109and will be removed in a future version.
a1063b2d 6110
6fbc9859
MH
6111=item Using just the first character returned by \N{} in character class in
6112regex; marked by <-- HERE in m/%s/
ff3f963a 6113
687531b5
FC
6114(W regexp) A charnames handler may return a sequence of more than one
6115character. Currently all but the first one are discarded when used in
6116a regular expression pattern bracketed character class.
ff3f963a 6117
c794c51b
FC
6118=item Using !~ with %s doesn't make sense
6119
6120(F) Using the C<!~> operator with C<s///r>, C<tr///r> or C<y///r> is
6121currently reserved for future use, as the exact behaviour has not
6903afa2 6122been decided. (Simply returning the boolean opposite of the
c794c51b 6123modified string is usually not particularly useful.)
0876b9a0 6124
949cf498
KW
6125=item UTF-16 surrogate U+%X
6126
968342a3 6127(S utf8, surrogate) You had a UTF-16 surrogate in a context where they are
949cf498
KW
6128not considered acceptable. These code points, between U+D800 and
6129U+DFFF (inclusive), are used by Unicode only for UTF-16. However, Perl
6130internally allows all unsigned integer code points (up to the size limit
6131available on your platform), including surrogates. But these can cause
6132problems when being input or output, which is likely where this message
6133came from. If you really really know what you are doing you can turn
8457b38f 6134off this warning by C<no warnings 'surrogate';>.
9466bab6 6135
68dc0745 6136=item Value of %s can be "0"; test with defined()
a6006777 6137
75b44862 6138(W misc) In a conditional expression, you used <HANDLE>, <*> (glob),
be771a83
GS
6139C<each()>, or C<readdir()> as a boolean value. Each of these constructs
6140can return a value of "0"; that would make the conditional expression
6141false, which is probably not what you intended. When using these
6142constructs in conditional expressions, test their values with the
6143C<defined> operator.
a6006777 6144
f675dbe5
CB
6145=item Value of CLI symbol "%s" too long
6146
be771a83
GS
6147(W misc) A warning peculiar to VMS. Perl tried to read the value of an
6148%ENV element from a CLI symbol table, and found a resultant string
6149longer than 1024 characters. The return value has been truncated to
61501024 characters.
f675dbe5 6151
b5c19bd7 6152=item Variable "%s" is not available
44a8e56a 6153
b5c19bd7
DM
6154(W closure) During compilation, an inner named subroutine or eval is
6155attempting to capture an outer lexical that is not currently available.
6903afa2 6156This can happen for one of two reasons. First, the outer lexical may be
b5c19bd7
DM
6157declared in an outer anonymous subroutine that has not yet been created.
6158(Remember that named subs are created at compile time, while anonymous
6903afa2 6159subs are created at run-time.) For example,
44a8e56a 6160
b5c19bd7 6161 sub { my $a; sub f { $a } }
44a8e56a 6162
b5c19bd7 6163At the time that f is created, it can't capture the current value of $a,
6903afa2 6164since the anonymous subroutine hasn't been created yet. Conversely,
b5c19bd7
DM
6165the following won't give a warning since the anonymous subroutine has by
6166now been created and is live:
be771a83 6167
b5c19bd7
DM
6168 sub { my $a; eval 'sub f { $a }' }->();
6169
6170The second situation is caused by an eval accessing a variable that has
6171gone out of scope, for example,
6172
6173 sub f {
6174 my $a;
6175 sub { eval '$a' }
6176 }
6177 f()->();
6178
6179Here, when the '$a' in the eval is being compiled, f() is not currently being
6180executed, so its $a is not available for capture.
44a8e56a 6181
b4581f09
JH
6182=item Variable "%s" is not imported%s
6183
120b0f81 6184(S misc) With "use strict" in effect, you referred to a global variable
413ff9f6 6185that you apparently thought was imported from another module, because
b4581f09
JH
6186something else of the same name (usually a subroutine) is exported by
6187that module. It usually means you put the wrong funny character on the
6188front of your variable.
6189
aec0ef10 6190=item Variable length lookbehind not implemented in regex m/%s/
b4581f09
JH
6191
6192(F) Lookbehind is allowed only for subexpressions whose length is fixed and
58e23c8d 6193known at compile time. See L<perlre>.
b4581f09
JH
6194
6195=item "%s" variable %s masks earlier declaration in same %s
6196
b9cc85ad
FC
6197(W misc) A "my", "our" or "state" variable has been redeclared in the
6198current scope or statement, effectively eliminating all access to the
6199previous instance. This is almost always a typographical error. Note
6200that the earlier variable will still exist until the end of the scope
20d33786 6201or until all closure references to it are destroyed.
b4581f09 6202
6df41af2
GS
6203=item Variable syntax
6204
6205(A) You've accidentally run your script through B<csh> instead
6206of Perl. Check the #! line, or manually feed your script into
6207Perl yourself.
6208
44a8e56a 6209=item Variable "%s" will not stay shared
6210
be771a83 6211(W closure) An inner (nested) I<named> subroutine is referencing a
b5c19bd7 6212lexical variable defined in an outer named subroutine.
44a8e56a 6213
b5c19bd7 6214When the inner subroutine is called, it will see the value of
be771a83
GS
6215the outer subroutine's variable as it was before and during the *first*
6216call to the outer subroutine; in this case, after the first call to the
6217outer subroutine is complete, the inner and outer subroutines will no
6218longer share a common value for the variable. In other words, the
6219variable will no longer be shared.
44a8e56a 6220
44a8e56a 6221This problem can usually be solved by making the inner subroutine
6222anonymous, using the C<sub {}> syntax. When inner anonymous subs that
b5c19bd7 6223reference variables in outer subroutines are created, they
be771a83 6224are automatically rebound to the current values of such variables.
44a8e56a 6225
6651ba0b
FC
6226=item vector argument not supported with alpha versions
6227
8b6051f1 6228(S printf) The %vd (s)printf format does not support version objects
6651ba0b
FC
6229with alpha parts.
6230
6fbc9859
MH
6231=item Verb pattern '%s' has a mandatory argument in regex; marked by <-- HERE
6232in m/%s/
e2e6a0f1 6233
6903afa2
FC
6234(F) You used a verb pattern that requires an argument. Supply an
6235argument or check that you are using the right verb.
e2e6a0f1 6236
6fbc9859
MH
6237=item Verb pattern '%s' may not have an argument in regex; marked by <-- HERE
6238in m/%s/
e2e6a0f1 6239
6903afa2 6240(F) You used a verb pattern that is not allowed an argument. Remove the
e2e6a0f1
YO
6241argument or check that you are using the right verb.
6242
084610c0
GS
6243=item Version number must be a constant number
6244
6245(P) The attempt to translate a C<use Module n.n LIST> statement into
6246its equivalent C<BEGIN> block found an internal inconsistency with
6247the version number.
6248
808ee47e
SP
6249=item Version string '%s' contains invalid data; ignoring: '%s'
6250
32e998fd
RGS
6251(W misc) The version string contains invalid characters at the end, which
6252are being ignored.
808ee47e 6253
7e1af8bc 6254=item Warning: something's wrong
5f05dabc 6255
6256(W) You passed warn() an empty string (the equivalent of C<warn "">) or
ec8bb14c 6257you called it with no args and C<$@> was empty.
5f05dabc 6258
f86702cc 6259=item Warning: unable to close filehandle %s properly
a0d0e21e 6260
be771a83
GS
6261(S) The implicit close() done by an open() got an error indication on
6262the close(). This usually indicates your file system ran out of disk
6263space.
a0d0e21e 6264
5f05dabc 6265=item Warning: Use of "%s" without parentheses is ambiguous
a0d0e21e 6266
be771a83
GS
6267(S ambiguous) You wrote a unary operator followed by something that
6268looks like a binary operator that could also have been interpreted as a
6269term or unary operator. For instance, if you know that the rand
6270function has a default argument of 1.0, and you write
a0d0e21e
LW
6271
6272 rand + 5;
6273
6274you may THINK you wrote the same thing as
6275
6276 rand() + 5;
6277
6278but in actual fact, you got
6279
6280 rand(+5);
6281
5f05dabc 6282So put in parentheses to say what you really mean.
a0d0e21e 6283
0f539b13
BF
6284=item when is experimental
6285
6286(S experimental::smartmatch) C<when> depends on smartmatch, which is
6287experimental. Additionally, it has several special cases that may
6288not be immediately obvious, and their behavior may change or
675fa9ff
FC
6289even be removed in any future release of perl. See the explanation
6290under L<perlsyn/Experimental Details on given and when>.
0f539b13 6291
4b3603a4
JH
6292=item Wide character in %s
6293
c8f79457 6294(S utf8) Perl met a wide character (>255) when it wasn't expecting
cd28123a
JH
6295one. This warning is by default on for I/O (like print). The easiest
6296way to quiet this warning is simply to add the C<:utf8> layer to the
6297output, e.g. C<binmode STDOUT, ':utf8'>. Another way to turn off the
6298warning is to add C<no warnings 'utf8';> but that is often closer to
6299cheating. In general, you are supposed to explicitly mark the
6300filehandle with an encoding, see L<open> and L<perlfunc/binmode>.
4b3603a4 6301
49704364
WL
6302=item Within []-length '%c' not allowed
6303
fa816bf3
FC
6304(F) The count in the (un)pack template may be replaced by C<[TEMPLATE]>
6305only if C<TEMPLATE> always matches the same amount of packed bytes that
6306can be determined from the template alone. This is not possible if
6307it contains any of the codes @, /, U, u, w or a *-length. Redesign
6308the template.
49704364 6309
9a7dcd9c 6310=item write() on closed filehandle %s
a0d0e21e 6311
be771a83 6312(W closed) The filehandle you're writing to got itself closed sometime
c289d2f7 6313before now. Check your control flow.
a0d0e21e 6314
9ae3ac1a 6315=item %s "\x%X" does not map to Unicode
b4581f09 6316
675fa9ff
FC
6317(F) When reading in different encodings, Perl tries to map
6318everything into Unicode characters. The bytes you read in
6319are not legal in this encoding. For example
b4581f09
JH
6320
6321 utf8 "\xE4" does not map to Unicode
6322
6323if you try to read in the a-diaereses Latin-1 as UTF-8.
6324
49704364 6325=item 'X' outside of string
a0d0e21e 6326
49704364
WL
6327(F) You had a (un)pack template that specified a relative position before
6328the beginning of the string being (un)packed. See L<perlfunc/pack>.
a0d0e21e 6329
49704364 6330=item 'x' outside of string in unpack
a0d0e21e
LW
6331
6332(F) You had a pack template that specified a relative position after
6333the end of the string being unpacked. See L<perlfunc/pack>.
6334
a0d0e21e
LW
6335=item YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!
6336
5f05dabc 6337(F) And you probably never will, because you probably don't have the
a0d0e21e 6338sources to your kernel, and your vendor probably doesn't give a rip
1b1f1335 6339about what you want. Your best bet is to put a setuid C wrapper around
496a33f5 6340your script.
a0d0e21e
LW
6341
6342=item You need to quote "%s"
6343
be771a83
GS
6344(W syntax) You assigned a bareword as a signal handler name.
6345Unfortunately, you already have a subroutine of that name declared,
6346which means that Perl 5 will try to call the subroutine when the
6347assignment is executed, which is probably not what you want. (If it IS
6348what you want, put an & in front.)
a0d0e21e 6349
6cfd5ea7
JH
6350=item Your random numbers are not that random
6351
50a39ba4 6352(F) When trying to initialize the random seed for hashes, Perl could
6cfd5ea7
JH
6353not get any randomness out of your system. This usually indicates
6354Something Very Wrong.
6355
a0d0e21e
LW
6356=back
6357
00eb3f2b
RGS
6358=head1 SEE ALSO
6359
ed3f9c4f 6360L<warnings>, L<perllexwarn>, L<diagnostics>.
00eb3f2b 6361
56e90b21 6362=cut