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