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