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