This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Clarify perldiag/Ambiguous use of %c{%s%s}
[perl5.git] / pod / perldiag.pod
CommitLineData
a0d0e21e
LW
1=head1 NAME
2
3perldiag - various Perl diagnostics
4
5=head1 DESCRIPTION
6
7These messages are classified as follows (listed in increasing order of
8desperation):
9
10 (W) A warning (optional).
d1d15184 11 (D) A deprecation (enabled by default).
00eb3f2b 12 (S) A severe warning (enabled by default).
a0d0e21e
LW
13 (F) A fatal error (trappable).
14 (P) An internal error you should never see (trappable).
54310121 15 (X) A very fatal error (nontrappable).
cb1a09d0 16 (A) An alien error message (not generated by Perl).
a0d0e21e 17
75b44862 18The majority of messages from the first three classifications above
64977eb6 19(W, D & S) can be controlled using the C<warnings> pragma.
e476b1b5
GS
20
21If a message can be controlled by the C<warnings> pragma, its warning
22category is included with the classification letter in the description
23below.
24
25Optional warnings are enabled by using the C<warnings> pragma or the B<-w>
26and B<-W> switches. Warnings may be captured by setting C<$SIG{__WARN__}>
27to a reference to a routine that will be called on each warning instead
28of printing it. See L<perlvar>.
29
b7eceb5b 30Severe warnings are always enabled, unless they are explicitly disabled
e476b1b5 31with the C<warnings> pragma or the B<-X> switch.
4438c4b7 32
748a9306 33Trappable errors may be trapped using the eval operator. See
4438c4b7
JH
34L<perlfunc/eval>. In almost all cases, warnings may be selectively
35disabled or promoted to fatal errors using the C<warnings> pragma.
36See L<warnings>.
a0d0e21e 37
6df41af2
GS
38The messages are in alphabetical order, without regard to upper or
39lower-case. Some of these messages are generic. Spots that vary are
40denoted with a %s or other printf-style escape. These escapes are
41ignored by the alphabetical order, as are all characters other than
42letters. To look up your message, just ignore anything that is not a
43letter.
a0d0e21e
LW
44
45=over 4
46
6df41af2 47=item accept() on closed socket %s
33633739 48
be771a83
GS
49(W closed) You tried to do an accept on a closed socket. Did you forget
50to check the return value of your socket() call? See
51L<perlfunc/accept>.
33633739 52
de42a5a9 53=item Allocation too large: %x
a0d0e21e 54
6df41af2 55(X) You can't allocate more than 64K on an MS-DOS machine.
a0d0e21e 56
1109a392 57=item '%c' allowed only after types %s
ef54e1a4 58
1109a392
MHM
59(F) The modifiers '!', '<' and '>' are allowed in pack() or unpack() only
60after certain types. See L<perlfunc/pack>.
ef54e1a4 61
6df41af2 62=item Ambiguous call resolved as CORE::%s(), qualify as such or use &
43192e07 63
75b44862 64(W ambiguous) A subroutine you have declared has the same name as a Perl
be771a83
GS
65keyword, and you have used the name without qualification for calling
66one or the other. Perl decided to call the builtin because the
67subroutine is not imported.
43192e07 68
6df41af2
GS
69To force interpretation as a subroutine call, either put an ampersand
70before the subroutine name, or qualify the name with its package.
71Alternatively, you can import the subroutine (or pretend that it's
72imported with the C<use subs> pragma).
43192e07 73
6df41af2 74To silently interpret it as the Perl operator, use the C<CORE::> prefix
496a33f5 75on the operator (e.g. C<CORE::log($x)>) or declare the subroutine
be771a83
GS
76to be an object method (see L<perlsub/"Subroutine Attributes"> or
77L<attributes>).
43192e07 78
cba5a3b0
DG
79=item Ambiguous overloaded argument to %s resolved as %s
80
81(W ambiguous) You called C<keys>, C<values> or C<each> on an object that had
82overloading of C<%{}> or C<@{}> or both. In such a case, the object is
83dereferenced according to its overloading, not its underlying reference type.
84The warning is issued when C<%{}> overloading exists on a blessed arrayref,
85when C<@{}> overloading exists on a blessed hashref, or when both overloadings
86are defined (in which case C<%{}> is used). You can force the interpretation
c69ca1d4 87of the object by explicitly dereferencing it as an array or hash instead of
cba5a3b0
DG
88passing the object itself to C<keys>, C<values> or C<each>.
89
c2e66d9e
GS
90=item Ambiguous range in transliteration operator
91
92(F) You wrote something like C<tr/a-z-0//> which doesn't mean anything at
93all. To include a C<-> character in a transliteration, put it either
94first or last. (In the past, C<tr/a-z-0//> was synonymous with
95C<tr/a-y//>, which was probably not what you would have expected.)
96
6df41af2 97=item Ambiguous use of %s resolved as %s
43192e07 98
6df41af2
GS
99(W ambiguous)(S) You said something that may not be interpreted the way
100you thought. Normally it's pretty easy to disambiguate it by supplying
101a missing quote, operator, parenthesis pair or declaration.
a0d0e21e 102
d8225693
JM
103=item Ambiguous use of %c resolved as operator %c
104
105(W ambiguous) C<%>, C<&>, and C<*> are both infix operators (modulus,
3303f755
FC
106bitwise and, and multiplication) I<and> initial special characters
107(denoting hashes, subroutines and typeglobs), and you said something
108like C<*foo * foo> that might be interpreted as either of them. We
109assumed you meant the infix operator, but please try to make it more
110clear -- in the example given, you might write C<*foo * foo()> if you
111really meant to multiply a glob by the result of calling a function.
d8225693 112
1ef43bca
JM
113=item Ambiguous use of %c{%s} resolved to %c%s
114
115(W ambiguous) You wrote something like C<@{foo}>, which might be
116asking for the variable C<@foo>, or it might be calling a function
117named foo, and dereferencing it as an array reference. If you wanted
118the varable, you can just write C<@foo>. If you wanted to call the
119function, write C<@{foo()}> ... or you could just not have a variable
120and a function with the same name, and save yourself a lot of trouble.
121
4da60377
JM
122=item Ambiguous use of %c{%s%s} resolved to %c%s%s
123
ccaaf480
FC
124(W ambiguous) You wrote something like C<${foo[2]}> (where foo
125represents the name of a Perl keyword), which might be looking for
126element number 2 of the array named C<@foo>, in which case please write
127C<$foo[2]>, or you might have meant to pass an anonymous arrayref to
128the function named foo, and then do a scalar deref on the value it
129returns. If you meant that, write C<${foo([2])}>.
130
131In regular expressions, the C<${foo[2]}> syntax is sometimes necessary
132to disambiguate between array subscripts and character classes.
133C</$length[2345]/>, for instance, will be interpreted as C<$length>
134followed by the character class C<[2345]>. If an array subscript is what
135you want, you can avoid the warning by changing C</${length[2345]}/>
136to the unsightly C</${\$length[2345]}/>, by renaming your array to
137something that does not coincide with a built-in keyword, or by
138simply turning off warnings with C<no warnings 'ambiguous';>.
4da60377 139
bdac9d71 140=item Ambiguous use of -%s resolved as -&%s()
397d0f13
JM
141
142(W ambiguous) You wrote something like C<-foo>, which might be the
143string C<"-foo"> (outside of C<use strict 'subs'>), or a call to the
144function C<foo>, negated. If you meant the string, just write
145C<"-foo">, and please use strict. If you meant the function call,
146write C<-foo()>.
147
6df41af2 148=item '|' and '<' may not both be specified on command line
a0d0e21e 149
be771a83
GS
150(F) An error peculiar to VMS. Perl does its own command line
151redirection, and found that STDIN was a pipe, and that you also tried to
152redirect STDIN using '<'. Only one STDIN stream to a customer, please.
c9f97d15 153
6df41af2 154=item '|' and '>' may not both be specified on command line
1028017a 155
be771a83
GS
156(F) An error peculiar to VMS. Perl does its own command line
157redirection, and thinks you tried to redirect stdout both to a file and
158into a pipe to another command. You need to choose one or the other,
159though nothing's stopping you from piping into a program or Perl script
160which 'splits' output into two streams, such as
1028017a 161
6df41af2
GS
162 open(OUT,">$ARGV[0]") or die "Can't write to $ARGV[0]: $!";
163 while (<STDIN>) {
164 print;
165 print OUT;
166 }
167 close OUT;
c9f97d15 168
6df41af2 169=item Applying %s to %s will act on scalar(%s)
eb6e2d6f 170
496a33f5
SC
171(W misc) The pattern match (C<//>), substitution (C<s///>), and
172transliteration (C<tr///>) operators work on scalar values. If you apply
be771a83 173one of them to an array or a hash, it will convert the array or hash to
ac036724 174a scalar value (the length of an array, or the population info of a
175hash) and then work on that scalar value. This is probably not what
be771a83
GS
176you meant to do. See L<perlfunc/grep> and L<perlfunc/map> for
177alternatives.
eb6e2d6f 178
6df41af2 179=item Args must match #! line
a0d0e21e 180
6df41af2
GS
181(F) The setuid emulator requires that the arguments Perl was invoked
182with match the arguments specified on the #! line. Since some systems
183impose a one-argument limit on the #! line, try combining switches;
184for example, turn C<-w -U> into C<-wU>.
a0d0e21e 185
6df41af2 186=item Arg too short for msgsnd
76cd736e 187
6df41af2 188(F) msgsnd() requires a string at least as long as sizeof(long).
76cd736e 189
b0fdf69e 190=item %s argument is not a HASH or ARRAY element or a subroutine
a0d0e21e 191
cc1c2e42
FC
192(F) The argument to exists() must be a hash or array element or a
193subroutine with an ampersand, such as:
a0d0e21e
LW
194
195 $foo{$bar}
cb4f522a 196 $ref->{"susie"}[12]
cc1c2e42 197 &do_something
a0d0e21e 198
8ea97a1e 199=item %s argument is not a HASH or ARRAY element or slice
5f05dabc 200
06e52bfa
FC
201(F) The argument to delete() must be either a hash or array element,
202such as:
5f05dabc 203
204 $foo{$bar}
cb4f522a 205 $ref->{"susie"}[12]
5f05dabc 206
8ea97a1e 207or a hash or array slice, such as:
5f05dabc 208
6df41af2
GS
209 @foo[$bar, $baz, $xyzzy]
210 @{$ref->[12]}{"susie", "queue"}
5315574d 211
6df41af2 212=item %s argument is not a subroutine name
a0d0e21e 213
6df41af2 214(F) The argument to exists() for C<exists &sub> must be a subroutine
be771a83
GS
215name, and not a subroutine call. C<exists &sub()> will generate this
216error.
a0d0e21e 217
f86702cc 218=item Argument "%s" isn't numeric%s
a0d0e21e 219
be771a83
GS
220(W numeric) The indicated string was fed as an argument to an operator
221that expected a numeric value instead. If you're fortunate the message
222will identify which operator was so unfortunate.
a0d0e21e 223
b4581f09
JH
224=item Argument list not closed for PerlIO layer "%s"
225
226(W layer) When pushing a layer with arguments onto the Perl I/O system you
227forgot the ) that closes the argument list. (Layers take care of transforming
228data between external and internal representations.) Perl stopped parsing
229the layer list at this point and did not attempt to push this layer.
230If your program didn't explicitly request the failing operation, it may be
231the result of the value of the environment variable PERLIO.
232
a0d0e21e
LW
233=item Array @%s missing the @ in argument %d of %s()
234
75b44862
GS
235(D deprecated) Really old Perl let you omit the @ on array names in some
236spots. This is now heavily deprecated.
a0d0e21e
LW
237
238=item assertion botched: %s
239
240(P) The malloc package that comes with Perl had an internal failure.
241
242=item Assertion failed: file "%s"
243
244(P) A general assertion failed. The file in question must be examined.
245
246=item Assignment to both a list and a scalar
247
248(F) If you assign to a conditional operator, the 2nd and 3rd arguments
249must either both be scalars or both be lists. Otherwise Perl won't
250know which context to supply to the right side.
251
96ebfdd7
RK
252=item A thread exited while %d threads were running
253
4447dfc1 254(W threads)(S) When using threaded Perl, a thread (not necessarily the main
96ebfdd7
RK
255thread) exited while there were still other threads running.
256Usually it's a good idea to first collect the return values of the
257created threads by joining them, and only then exit from the main
258thread. See L<threads>.
259
2393f1b9 260=item Attempt to access disallowed key '%s' in a restricted hash
1b1f1335 261
49293501 262(F) The failing code has attempted to get or set a key which is not in
2393f1b9 263the current set of allowed keys of a restricted hash.
49293501 264
81689caa
HS
265=item Attempt to bless into a reference
266
267(F) The CLASSNAME argument to the bless() operator is expected to be
268the name of the package to bless the resulting object into. You've
269supplied instead a reference to something: perhaps you wrote
270
271 bless $self, $proto;
272
273when you intended
274
275 bless $self, ref($proto) || $proto;
276
277If you actually want to bless into the stringified version
278of the reference supplied, you need to stringify it yourself, for
279example by:
280
281 bless $self, "$proto";
282
96ebfdd7
RK
283=item Attempt to delete disallowed key '%s' from a restricted hash
284
285(F) The failing code attempted to delete from a restricted hash a key
286which is not in its key set.
287
288=item Attempt to delete readonly key '%s' from a restricted hash
289
290(F) The failing code attempted to delete a key whose value has been
291declared readonly from a restricted hash.
292
de42a5a9 293=item Attempt to free non-arena SV: 0x%x
a0d0e21e 294
be771a83
GS
295(P internal) All SV objects are supposed to be allocated from arenas
296that will be garbage collected on exit. An SV was discovered to be
297outside any of those arenas.
a0d0e21e 298
54310121 299=item Attempt to free nonexistent shared string
bbce6d69 300
be771a83
GS
301(P internal) Perl maintains a reference counted internal table of
302strings to optimize the storage and access of hash keys and other
303strings. This indicates someone tried to decrement the reference count
304of a string that can no longer be found in the table.
bbce6d69 305
a0d0e21e
LW
306=item Attempt to free temp prematurely
307
be771a83
GS
308(W debugging) Mortalized values are supposed to be freed by the
309free_tmps() routine. This indicates that something else is freeing the
310SV before the free_tmps() routine gets a chance, which means that the
311free_tmps() routine will be freeing an unreferenced scalar when it does
312try to free it.
a0d0e21e
LW
313
314=item Attempt to free unreferenced glob pointers
315
e476b1b5 316(P internal) The reference counts got screwed up on symbol aliases.
a0d0e21e
LW
317
318=item Attempt to free unreferenced scalar
319
be771a83
GS
320(W internal) Perl went to decrement the reference count of a scalar to
321see if it would go to 0, and discovered that it had already gone to 0
322earlier, and should have been freed, and in fact, probably was freed.
323This could indicate that SvREFCNT_dec() was called too many times, or
324that SvREFCNT_inc() was called too few times, or that the SV was
325mortalized when it shouldn't have been, or that memory has been
326corrupted.
a0d0e21e 327
dcdda58d
GS
328=item Attempt to join self
329
330(F) You tried to join a thread from within itself, which is an
be771a83
GS
331impossible task. You may be joining the wrong thread, or you may need
332to move the join() to some other thread.
dcdda58d 333
84902520
TB
334=item Attempt to pack pointer to temporary value
335
be771a83
GS
336(W pack) You tried to pass a temporary value (like the result of a
337function, or a computed expression) to the "p" pack() template. This
338means the result contains a pointer to a location that could become
339invalid anytime, even before the end of the current statement. Use
340literals or global values as arguments to the "p" pack() template to
341avoid this warning.
84902520 342
087b5369
RD
343=item Attempt to reload %s aborted.
344
345(F) You tried to load a file with C<use> or C<require> that failed to
346compile once already. Perl will not try to compile this file again
347unless you delete its entry from %INC. See L<perlfunc/require> and
348L<perlvar/%INC>.
349
1b20cd17
NC
350=item Attempt to set length of freed array
351
352(W) You tried to set the length of an array which has been freed. You
353can do this by storing a reference to the scalar representing the last index
354of an array and later assigning through that reference. For example
355
356 $r = do {my @a; \$#a};
357 $$r = 503
358
b7a902f4 359=item Attempt to use reference as lvalue in substr
360
be771a83
GS
361(W substr) You supplied a reference as the first argument to substr()
362used as an lvalue, which is pretty strange. Perhaps you forgot to
363dereference it first. See L<perlfunc/substr>.
b7a902f4 364
c32124fe
NC
365=item Attribute "locked" is deprecated
366
367(D deprecated) You have used the attributes pragam to modify the "locked"
368attribute on a code reference. The :locked attribute is obsolete, has had no
369effect since 5005 threads were removed, and will be removed in the next major
370release of Perl 5.
371
f1a3ce43
NC
372=item Attribute "unique" is deprecated
373
374(D deprecated) You have used the attributes pragam to modify the "unique"
b7a2910f 375attribute on an array, hash or scalar reference. The :unique attribute has
259976bd 376had no effect since Perl 5.8.8, and will be removed in the next major
f1a3ce43
NC
377release of Perl 5.
378
de42a5a9 379=item Bad arg length for %s, is %u, should be %d
a0d0e21e 380
be771a83
GS
381(F) You passed a buffer of the wrong size to one of msgctl(), semctl()
382or shmctl(). In C parlance, the correct sizes are, respectively,
5f05dabc 383S<sizeof(struct msqid_ds *)>, S<sizeof(struct semid_ds *)>, and
a0d0e21e
LW
384S<sizeof(struct shmid_ds *)>.
385
7a95317d
GS
386=item Bad evalled substitution pattern
387
496a33f5 388(F) You've used the C</e> switch to evaluate the replacement for a
7a95317d
GS
389substitution, but perl found a syntax error in the code to evaluate,
390most likely an unexpected right brace '}'.
391
a0d0e21e
LW
392=item Bad filehandle: %s
393
be771a83
GS
394(F) A symbol was passed to something wanting a filehandle, but the
395symbol has no filehandle associated with it. Perhaps you didn't do an
396open(), or did it in another package.
a0d0e21e
LW
397
398=item Bad free() ignored
399
be771a83
GS
400(S malloc) An internal routine called free() on something that had never
401been malloc()ed in the first place. Mandatory, but can be disabled by
9ea8bc6d 402setting environment variable C<PERL_BADFREE> to 0.
33c8a3fe 403
9ea8bc6d 404This message can be seen quite often with DB_File on systems with "hard"
be771a83
GS
405dynamic linking, like C<AIX> and C<OS/2>. It is a bug of C<Berkeley DB>
406which is left unnoticed if C<DB> uses I<forgiving> system malloc().
a0d0e21e 407
aa689395 408=item Bad hash
409
410(P) One of the internal hash routines was passed a null HV pointer.
411
6df41af2
GS
412=item Badly placed ()'s
413
414(A) You've accidentally run your script through B<csh> instead
415of Perl. Check the #! line, or manually feed your script into
416Perl yourself.
417
a0d0e21e
LW
418=item Bad name after %s::
419
be771a83
GS
420(F) You started to name a symbol by using a package prefix, and then
421didn't finish the symbol. In particular, you can't interpolate outside
422of quotes, so
a0d0e21e
LW
423
424 $var = 'myvar';
425 $sym = mypack::$var;
426
427is not the same as
428
429 $var = 'myvar';
430 $sym = "mypack::$var";
431
88e1f1a2
JV
432=item Bad plugin affecting keyword '%s'
433
434(F) An extension using the keyword plugin mechanism violated the
435plugin API.
436
4ad56ec9
IZ
437=item Bad realloc() ignored
438
be771a83
GS
439(S malloc) An internal routine called realloc() on something that had
440never been malloc()ed in the first place. Mandatory, but can be disabled
441by setting environment variable C<PERL_BADFREE> to 1.
4ad56ec9 442
a0d0e21e
LW
443=item Bad symbol for array
444
445(P) An internal request asked to add an array entry to something that
446wasn't a symbol table entry.
447
4df3f177
SP
448=item Bad symbol for dirhandle
449
450(P) An internal request asked to add a dirhandle entry to something
451that wasn't a symbol table entry.
452
453
a0d0e21e
LW
454=item Bad symbol for filehandle
455
be771a83
GS
456(P) An internal request asked to add a filehandle entry to something
457that wasn't a symbol table entry.
a0d0e21e
LW
458
459=item Bad symbol for hash
460
461(P) An internal request asked to add a hash entry to something that
462wasn't a symbol table entry.
463
34d09196
GS
464=item Bareword found in conditional
465
be771a83
GS
466(W bareword) The compiler found a bareword where it expected a
467conditional, which often indicates that an || or && was parsed as part
468of the last argument of the previous construct, for example:
34d09196
GS
469
470 open FOO || die;
471
be771a83
GS
472It may also indicate a misspelled constant that has been interpreted as
473a bareword:
34d09196
GS
474
475 use constant TYPO => 1;
476 if (TYOP) { print "foo" }
477
478The C<strict> pragma is useful in avoiding such errors.
479
6df41af2
GS
480=item Bareword "%s" not allowed while "strict subs" in use
481
482(F) With "strict subs" in use, a bareword is only allowed as a
be771a83
GS
483subroutine identifier, in curly brackets or to the left of the "=>"
484symbol. Perhaps you need to predeclare a subroutine?
6df41af2
GS
485
486=item Bareword "%s" refers to nonexistent package
487
be771a83
GS
488(W bareword) You used a qualified bareword of the form C<Foo::>, but the
489compiler saw no other uses of that namespace before that point. Perhaps
490you need to predeclare a package?
6df41af2 491
a0d0e21e
LW
492=item BEGIN failed--compilation aborted
493
be771a83
GS
494(F) An untrapped exception was raised while executing a BEGIN
495subroutine. Compilation stops immediately and the interpreter is
496exited.
a0d0e21e 497
68dc0745 498=item BEGIN not safe after errors--compilation aborted
499
500(F) Perl found a C<BEGIN {}> subroutine (or a C<use> directive, which
be771a83
GS
501implies a C<BEGIN {}>) after one or more compilation errors had already
502occurred. Since the intended environment for the C<BEGIN {}> could not
503be guaranteed (due to the errors), and since subsequent code likely
504depends on its correct operation, Perl just gave up.
68dc0745 505
6df41af2
GS
506=item \1 better written as $1
507
be771a83
GS
508(W syntax) Outside of patterns, backreferences live on as variables.
509The use of backslashes is grandfathered on the right-hand side of a
510substitution, but stylistically it's better to use the variable form
511because other Perl programmers will expect it, and it works better if
512there are more than 9 backreferences.
6df41af2 513
252aa082
JH
514=item Binary number > 0b11111111111111111111111111111111 non-portable
515
e476b1b5 516(W portable) The binary number you specified is larger than 2**32-1
9e24b6e2
JH
517(4294967295) and therefore non-portable between systems. See
518L<perlport> for more on portability concerns.
252aa082 519
69282e91 520=item bind() on closed socket %s
a0d0e21e 521
be771a83
GS
522(W closed) You tried to do a bind on a closed socket. Did you forget to
523check the return value of your socket() call? See L<perlfunc/bind>.
a0d0e21e 524
c289d2f7
JH
525=item binmode() on closed filehandle %s
526
527(W unopened) You tried binmode() on a filehandle that was never opened.
528Check you control flow and number of arguments.
529
c5a0f51a
JH
530=item Bit vector size > 32 non-portable
531
e476b1b5 532(W portable) Using bit vector sizes larger than 32 is non-portable.
c5a0f51a 533
4633a7c4
LW
534=item Bizarre copy of %s in %s
535
be771a83 536(P) Perl detected an attempt to copy an internal value that is not
b45f050a 537copyable.
4633a7c4 538
f675dbe5
CB
539=item Buffer overflow in prime_env_iter: %s
540
be771a83
GS
541(W internal) A warning peculiar to VMS. While Perl was preparing to
542iterate over %ENV, it encountered a logical name or symbol definition
543which was too long, so it was truncated to the string shown.
f675dbe5 544
a0d0e21e
LW
545=item Callback called exit
546
4929bf7b 547(F) A subroutine invoked from an external package via call_sv()
a0d0e21e
LW
548exited by calling exit.
549
6df41af2 550=item %s() called too early to check prototype
f675dbe5 551
be771a83
GS
552(W prototype) You've called a function that has a prototype before the
553parser saw a definition or declaration for it, and Perl could not check
554that the call conforms to the prototype. You need to either add an
555early prototype declaration for the subroutine in question, or move the
556subroutine definition ahead of the call to get proper prototype
557checking. Alternatively, if you are certain that you're calling the
558function correctly, you may put an ampersand before the name to avoid
559the warning. See L<perlsub>.
f675dbe5 560
49704364 561=item Cannot compress integer in pack
0258719b
NC
562
563(F) An argument to pack("w",...) was too large to compress. The BER
564compressed integer format can only be used with positive integers, and you
565attempted to compress Infinity or a very large number (> 1e308).
566See L<perlfunc/pack>.
567
49704364 568=item Cannot compress negative numbers in pack
0258719b
NC
569
570(F) An argument to pack("w",...) was negative. The BER compressed integer
571format can only be used with positive integers. See L<perlfunc/pack>.
572
5c1f4d79
NC
573=item Cannot convert a reference to %s to typeglob
574
575(F) You manipulated Perl's symbol table directly, stored a reference in it,
576then tried to access that symbol via conventional Perl syntax. The access
577triggers Perl to autovivify that typeglob, but it there is no legal conversion
578from that type of reference to a typeglob.
579
ba2fdce6
NC
580=item Cannot copy to %s in %s
581
582(P) Perl detected an attempt to copy a value to an internal type that cannot
583be directly assigned not.
584
b5d97229
RGS
585=item Cannot find encoding "%s"
586
587(S io) You tried to apply an encoding that did not exist to a filehandle,
588either with open() or binmode().
589
96ebfdd7
RK
590=item Can only compress unsigned integers in pack
591
592(F) An argument to pack("w",...) was not an integer. The BER compressed
593integer format can only be used with positive integers, and you attempted
594to compress something else. See L<perlfunc/pack>.
595
a0d0e21e
LW
596=item Can't bless non-reference value
597
598(F) Only hard references may be blessed. This is how Perl "enforces"
599encapsulation of objects. See L<perlobj>.
600
dc57907a
RGS
601=item Can't "break" in a loop topicalizer
602
0d863452
RH
603(F) You called C<break>, but you're in a C<foreach> block rather than
604a C<given> block. You probably meant to use C<next> or C<last>.
605
606=item Can't "break" outside a given block
dc57907a 607
0d863452
RH
608(F) You called C<break>, but you're not inside a C<given> block.
609
a0d0e21e
LW
610=item Can't call method "%s" in empty package "%s"
611
612(F) You called a method correctly, and it correctly indicated a package
613functioning as a class, but that package doesn't have ANYTHING defined
614in it, let alone methods. See L<perlobj>.
615
6df41af2
GS
616=item Can't call method "%s" on an undefined value
617
618(F) You used the syntax of a method call, but the slot filled by the
be771a83
GS
619object reference or package name contains an undefined value. Something
620like this will reproduce the error:
6df41af2
GS
621
622 $BADREF = undef;
623 process $BADREF 1,2,3;
624 $BADREF->process(1,2,3);
625
a0d0e21e
LW
626=item Can't call method "%s" on unblessed reference
627
54310121 628(F) A method call must know in what package it's supposed to run. It
be771a83
GS
629ordinarily finds this out from the object reference you supply, but you
630didn't supply an object reference in this case. A reference isn't an
631object reference until it has been blessed. See L<perlobj>.
a0d0e21e
LW
632
633=item Can't call method "%s" without a package or object reference
634
635(F) You used the syntax of a method call, but the slot filled by the
be771a83
GS
636object reference or package name contains an expression that returns a
637defined value which is neither an object reference nor a package name.
72b5445b
GS
638Something like this will reproduce the error:
639
640 $BADREF = 42;
641 process $BADREF 1,2,3;
642 $BADREF->process(1,2,3);
643
a0d0e21e
LW
644=item Can't chdir to %s
645
646(F) You called C<perl -x/foo/bar>, but C</foo/bar> is not a directory
647that you can chdir to, possibly because it doesn't exist.
648
0545a864 649=item Can't check filesystem of script "%s" for nosuid
104d25b7 650
be771a83
GS
651(P) For some reason you can't check the filesystem of the script for
652nosuid.
104d25b7 653
6df41af2
GS
654=item Can't coerce array into hash
655
656(F) You used an array where a hash was expected, but the array has no
657information on how to map from keys to array indices. You can do that
658only with arrays that have a hash reference at index 0.
659
a0d0e21e
LW
660=item Can't coerce %s to integer in %s
661
662(F) Certain types of SVs, in particular real symbol table entries
55497cff 663(typeglobs), can't be forced to stop being what they are. So you can't
a0d0e21e
LW
664say things like:
665
666 *foo += 1;
667
668You CAN say
669
670 $foo = *foo;
671 $foo += 1;
672
673but then $foo no longer contains a glob.
674
675=item Can't coerce %s to number in %s
676
677(F) Certain types of SVs, in particular real symbol table entries
55497cff 678(typeglobs), can't be forced to stop being what they are.
a0d0e21e
LW
679
680=item Can't coerce %s to string in %s
681
682(F) Certain types of SVs, in particular real symbol table entries
55497cff 683(typeglobs), can't be forced to stop being what they are.
a0d0e21e 684
0d863452 685=item Can't "continue" outside a when block
dc57907a 686
0d863452
RH
687(F) You called C<continue>, but you're not inside a C<when>
688or C<default> block.
689
a0d0e21e
LW
690=item Can't create pipe mailbox
691
be771a83
GS
692(P) An error peculiar to VMS. The process is suffering from exhausted
693quotas or other plumbing problems.
a0d0e21e 694
eb64745e 695=item Can't declare class for non-scalar %s in "%s"
a0d0e21e 696
2f7e735d 697(F) Currently, only scalar variables can be declared with a specific
30c282f6 698class qualifier in a "my", "our" or "state" declaration. The semantics may be
2f7e735d 699extended for other types of variables in future.
eb64745e
GS
700
701=item Can't declare %s in "%s"
702
30c282f6
NC
703(F) Only scalar, array, and hash variables may be declared as "my", "our" or
704"state" variables. They must have ordinary identifiers as names.
a0d0e21e 705
6df41af2
GS
706=item Can't do inplace edit: %s is not a regular file
707
be771a83
GS
708(S inplace) You tried to use the B<-i> switch on a special file, such as
709a file in /dev, or a FIFO. The file was ignored.
6df41af2 710
a0d0e21e
LW
711=item Can't do inplace edit on %s: %s
712
be771a83
GS
713(S inplace) The creation of the new file failed for the indicated
714reason.
a0d0e21e 715
54310121 716=item Can't do inplace edit without backup
a0d0e21e 717
be771a83
GS
718(F) You're on a system such as MS-DOS that gets confused if you try
719reading from a deleted (but still opened) file. You have to say
720C<-i.bak>, or some such.
a0d0e21e 721
10f9c03d 722=item Can't do inplace edit: %s would not be unique
a0d0e21e 723
e476b1b5 724(S inplace) Your filesystem does not support filenames longer than 14
10f9c03d
CK
725characters and Perl was unable to create a unique filename during
726inplace editing with the B<-i> switch. The file was ignored.
a0d0e21e 727
7253e4e3 728=item Can't do {n,m} with n > m in regex; marked by <-- HERE in m/%s/
a0d0e21e 729
b45f050a 730(F) Minima must be less than or equal to maxima. If you really want your
7253e4e3 731regexp to match something 0 times, just put {0}. The <-- HERE shows in the
b45f050a 732regular expression about where the problem was discovered. See L<perlre>.
a0d0e21e 733
a0d0e21e
LW
734=item Can't do waitpid with flags
735
be771a83
GS
736(F) This machine doesn't have either waitpid() or wait4(), so only
737waitpid() without flags is emulated.
a0d0e21e 738
a0d0e21e
LW
739=item Can't emulate -%s on #! line
740
be771a83
GS
741(F) The #! line specifies a switch that doesn't make sense at this
742point. For example, it'd be kind of silly to put a B<-x> on the #!
743line.
a0d0e21e 744
1109a392
MHM
745=item Can't %s %s-endian %ss on this platform
746
747(F) Your platform's byte-order is neither big-endian nor little-endian,
748or it has a very strange pointer size. Packing and unpacking big- or
749little-endian floating point values and pointers may not be possible.
750See L<perlfunc/pack>.
751
a0d0e21e
LW
752=item Can't exec "%s": %s
753
d1be9408 754(W exec) A system(), exec(), or piped open call could not execute the
be771a83
GS
755named program for the indicated reason. Typical reasons include: the
756permissions were wrong on the file, the file wasn't found in
757C<$ENV{PATH}>, the executable in question was compiled for another
758architecture, or the #! line in a script points to an interpreter that
759can't be run for similar reasons. (Or maybe your system doesn't support
760#! at all.)
a0d0e21e
LW
761
762=item Can't exec %s
763
be771a83
GS
764(F) Perl was trying to execute the indicated program for you because
765that's what the #! line said. If that's not what you wanted, you may
766need to mention "perl" on the #! line somewhere.
a0d0e21e
LW
767
768=item Can't execute %s
769
be771a83
GS
770(F) You used the B<-S> switch, but the copies of the script to execute
771found in the PATH did not have correct permissions.
2a92aaa0 772
6df41af2 773=item Can't find an opnumber for "%s"
2a92aaa0 774
be771a83
GS
775(F) A string of a form C<CORE::word> was given to prototype(), but there
776is no builtin with the name C<word>.
6df41af2 777
56ca2fc0
JH
778=item Can't find %s character property "%s"
779
780(F) You used C<\p{}> or C<\P{}> but the character property by that name
e1b711da
KW
781could not be found. Maybe you misspelled the name of the property?
782See L<perluniprops/Properties accessible through \p{} and \P{}>
783for a complete list of available properties.
56ca2fc0 784
6df41af2
GS
785=item Can't find label %s
786
be771a83
GS
787(F) You said to goto a label that isn't mentioned anywhere that it's
788possible for us to go to. See L<perlfunc/goto>.
2a92aaa0
GS
789
790=item Can't find %s on PATH
791
be771a83
GS
792(F) You used the B<-S> switch, but the script to execute could not be
793found in the PATH.
a0d0e21e 794
6df41af2 795=item Can't find %s on PATH, '.' not in PATH
a0d0e21e 796
be771a83
GS
797(F) You used the B<-S> switch, but the script to execute could not be
798found in the PATH, or at least not with the correct permissions. The
799script exists in the current directory, but PATH prohibits running it.
a0d0e21e
LW
800
801=item Can't find string terminator %s anywhere before EOF
802
be771a83
GS
803(F) Perl strings can stretch over multiple lines. This message means
804that the closing delimiter was omitted. Because bracketed quotes count
805nesting levels, the following is missing its final parenthesis:
a0d0e21e 806
fb73857a 807 print q(The character '(' starts a side comment.);
808
be771a83
GS
809If you're getting this error from a here-document, you may have included
810unseen whitespace before or after your closing tag. A good programmer's
811editor will have a way to help you find these characters.
a0d0e21e 812
660a4616
TS
813=item Can't find Unicode property definition "%s"
814
815(F) You may have tried to use C<\p> which means a Unicode property (for
e1b711da
KW
816example C<\p{Lu}> matches all uppercase letters). If you did mean to use a
817Unicode property, see
818L<perluniprops/Properties accessible through \p{} and \P{}>
819for a complete list of available properties.
660a4616
TS
820If you didn't mean to use a Unicode property, escape the C<\p>, either
821by C<\\p> (just the C<\p>) or by C<\Q\p> (the rest of the string, until
822possible C<\E>).
823
b3647a36 824=item Can't fork: %s
a0d0e21e 825
be771a83
GS
826(F) A fatal error occurred while trying to fork while opening a
827pipeline.
a0d0e21e 828
b3647a36
SR
829=item Can't fork, trying again in 5 seconds
830
c973c02e 831(W pipe) A fork in a piped open failed with EAGAIN and will be retried
b3647a36
SR
832after five seconds.
833
748a9306
LW
834=item Can't get filespec - stale stat buffer?
835
be771a83
GS
836(S) A warning peculiar to VMS. This arises because of the difference
837between access checks under VMS and under the Unix model Perl assumes.
838Under VMS, access checks are done by filename, rather than by bits in
839the stat buffer, so that ACLs and other protections can be taken into
840account. Unfortunately, Perl assumes that the stat buffer contains all
841the necessary information, and passes it, instead of the filespec, to
842the access checking routine. It will try to retrieve the filespec using
843the device name and FID present in the stat buffer, but this works only
844if you haven't made a subsequent call to the CRTL stat() routine,
845because the device name is overwritten with each call. If this warning
846appears, the name lookup failed, and the access checking routine gave up
847and returned FALSE, just to be conservative. (Note: The access checking
848routine knows about the Perl C<stat> operator and file tests, so you
849shouldn't ever see this warning in response to a Perl command; it arises
850only if some internal code takes stat buffers lightly.)
748a9306 851
a0d0e21e
LW
852=item Can't get pipe mailbox device name
853
be771a83
GS
854(P) An error peculiar to VMS. After creating a mailbox to act as a
855pipe, Perl can't retrieve its name for later use.
a0d0e21e
LW
856
857=item Can't get SYSGEN parameter value for MAXBUF
858
748a9306
LW
859(P) An error peculiar to VMS. Perl asked $GETSYI how big you want your
860mailbox buffers to be, and didn't get an answer.
a0d0e21e 861
6df41af2 862=item Can't "goto" into the middle of a foreach loop
a0d0e21e 863
be771a83
GS
864(F) A "goto" statement was executed to jump into the middle of a foreach
865loop. You can't get there from here. See L<perlfunc/goto>.
6df41af2
GS
866
867=item Can't "goto" out of a pseudo block
868
be771a83
GS
869(F) A "goto" statement was executed to jump out of what might look like
870a block, except that it isn't a proper block. This usually occurs if
871you tried to jump out of a sort() block or subroutine, which is a no-no.
872See L<perlfunc/goto>.
a0d0e21e 873
9850bf21 874=item Can't goto subroutine from a sort sub (or similar callback)
cd299c6e 875
9850bf21
RH
876(F) The "goto subroutine" call can't be used to jump out of the
877comparison sub for a sort(), or from a similar callback (such
878as the reduce() function in List::Util).
879
c74ace89 880=item Can't goto subroutine from an eval-%s
b150fb22 881
be771a83 882(F) The "goto subroutine" call can't be used to jump out of an eval
c74ace89 883"string" or block.
b150fb22 884
6df41af2
GS
885=item Can't goto subroutine outside a subroutine
886
be771a83
GS
887(F) The deeply magical "goto subroutine" call can only replace one
888subroutine call for another. It can't manufacture one out of whole
889cloth. In general you should be calling it out of only an AUTOLOAD
890routine anyway. See L<perlfunc/goto>.
6df41af2 891
0b5b802d
GS
892=item Can't ignore signal CHLD, forcing to default
893
be771a83
GS
894(W signal) Perl has detected that it is being run with the SIGCHLD
895signal (sometimes known as SIGCLD) disabled. Since disabling this
896signal will interfere with proper determination of exit status of child
897processes, Perl has reset the signal to its default value. This
898situation typically indicates that the parent program under which Perl
899may be running (e.g. cron) is being very careless.
0b5b802d 900
e2c0f81f
DG
901=item Can't kill a non-numeric process ID
902
903(F) Process identifiers must be (signed) integers. It is a fatal error to
904attempt to kill() an undefined, empty-string or otherwise non-numeric
905process identifier.
906
6df41af2 907=item Can't "last" outside a loop block
4633a7c4 908
6df41af2 909(F) A "last" statement was executed to break out of the current block,
be771a83
GS
910except that there's this itty bitty problem called there isn't a current
911block. Note that an "if" or "else" block doesn't count as a "loopish"
912block, as doesn't a block given to sort(), map() or grep(). You can
913usually double the curlies to get the same effect though, because the
914inner curlies will be considered a block that loops once. See
915L<perlfunc/last>.
4633a7c4 916
2c7d6b9c
RGS
917=item Can't linearize anonymous symbol table
918
919(F) Perl tried to calculate the method resolution order (MRO) of a
920package, but failed because the package stash has no name.
921
b8170e59
JB
922=item Can't load '%s' for module %s
923
924(F) The module you tried to load failed to load a dynamic extension. This
925may either mean that you upgraded your version of perl to one that is
926incompatible with your old dynamic extensions (which is known to happen
927between major versions of perl), or (more likely) that your dynamic
16d98ec5 928extension was built against an older version of the library that is
b8170e59
JB
929installed on your system. You may need to rebuild your old dynamic
930extensions.
931
748a9306
LW
932=item Can't localize lexical variable %s
933
2ba9eb46 934(F) You used local on a variable name that was previously declared as a
30c282f6 935lexical variable using "my" or "state". This is not allowed. If you want to
748a9306
LW
936localize a package variable of the same name, qualify it with the
937package name.
938
6df41af2 939=item Can't localize through a reference
4727527e 940
6df41af2
GS
941(F) You said something like C<local $$ref>, which Perl can't currently
942handle, because when it goes to restore the old value of whatever $ref
be771a83 943pointed to after the scope of the local() is finished, it can't be sure
64977eb6 944that $ref will still be a reference.
4727527e 945
ea071790 946=item Can't locate %s
ec889f3a
GS
947
948(F) You said to C<do> (or C<require>, or C<use>) a file that couldn't be
949found. Perl looks for the file in all the locations mentioned in @INC,
be771a83
GS
950unless the file name included the full path to the file. Perhaps you
951need to set the PERL5LIB or PERL5OPT environment variable to say where
952the extra library is, or maybe the script needs to add the library name
953to @INC. Or maybe you just misspelled the name of the file. See
954L<perlfunc/require> and L<lib>.
a0d0e21e 955
6df41af2
GS
956=item Can't locate auto/%s.al in @INC
957
be771a83
GS
958(F) A function (or method) was called in a package which allows
959autoload, but there is no function to autoload. Most probable causes
960are a misprint in a function/method name or a failure to C<AutoSplit>
961the file, say, by doing C<make install>.
6df41af2 962
b8170e59
JB
963=item Can't locate loadable object for module %s in @INC
964
965(F) The module you loaded is trying to load an external library, like
966for example, C<foo.so> or C<bar.dll>, but the L<DynaLoader> module was
967unable to locate this library. See L<DynaLoader>.
968
a0d0e21e
LW
969=item Can't locate object method "%s" via package "%s"
970
971(F) You called a method correctly, and it correctly indicated a package
972functioning as a class, but that package doesn't define that particular
2ba9eb46 973method, nor does any of its base classes. See L<perlobj>.
a0d0e21e
LW
974
975=item Can't locate package %s for @%s::ISA
976
be771a83
GS
977(W syntax) The @ISA array contained the name of another package that
978doesn't seem to exist.
a0d0e21e 979
2f7da168
RK
980=item Can't locate PerlIO%s
981
982(F) You tried to use in open() a PerlIO layer that does not exist,
983e.g. open(FH, ">:nosuchlayer", "somefile").
984
3e3baf6d
TB
985=item Can't make list assignment to \%ENV on this system
986
be771a83
GS
987(F) List assignment to %ENV is not supported on some systems, notably
988VMS.
3e3baf6d 989
a0d0e21e
LW
990=item Can't modify %s in %s
991
be771a83
GS
992(F) You aren't allowed to assign to the item indicated, or otherwise try
993to change it, such as with an auto-increment.
a0d0e21e 994
54310121 995=item Can't modify nonexistent substring
a0d0e21e
LW
996
997(P) The internal routine that does assignment to a substr() was handed
998a NULL.
999
6df41af2
GS
1000=item Can't modify non-lvalue subroutine call
1001
1002(F) Subroutines meant to be used in lvalue context should be declared as
1003such, see L<perlsub/"Lvalue subroutines">.
1004
5f05dabc 1005=item Can't msgrcv to read-only var
a0d0e21e 1006
5f05dabc 1007(F) The target of a msgrcv must be modifiable to be used as a receive
a0d0e21e
LW
1008buffer.
1009
6df41af2
GS
1010=item Can't "next" outside a loop block
1011
1012(F) A "next" statement was executed to reiterate the current block, but
1013there isn't a current block. Note that an "if" or "else" block doesn't
be771a83
GS
1014count as a "loopish" block, as doesn't a block given to sort(), map() or
1015grep(). You can usually double the curlies to get the same effect
1016though, because the inner curlies will be considered a block that loops
1017once. See L<perlfunc/next>.
6df41af2 1018
a0d0e21e
LW
1019=item Can't open %s: %s
1020
c47ff5f1 1021(S inplace) The implicit opening of a file through use of the C<< <> >>
08e9d68e
DD
1022filehandle, either implicitly under the C<-n> or C<-p> command-line
1023switches, or explicitly, failed for the indicated reason. Usually this
be771a83
GS
1024is because you don't have read permission for a file which you named on
1025the command line.
a0d0e21e 1026
9a869a14
RGS
1027=item Can't open a reference
1028
1029(W io) You tried to open a scalar reference for reading or writing,
1030using the 3-arg open() syntax :
1031
1032 open FH, '>', $ref;
1033
1034but your version of perl is compiled without perlio, and this form of
1035open is not supported.
1036
a0d0e21e
LW
1037=item Can't open bidirectional pipe
1038
be771a83
GS
1039(W pipe) You tried to say C<open(CMD, "|cmd|")>, which is not supported.
1040You can try any of several modules in the Perl library to do this, such
1041as IPC::Open2. Alternately, direct the pipe's output to a file using
1042">", and then read it in under a different file handle.
a0d0e21e 1043
748a9306
LW
1044=item Can't open error file %s as stderr
1045
be771a83
GS
1046(F) An error peculiar to VMS. Perl does its own command line
1047redirection, and couldn't open the file specified after '2>' or '2>>' on
1048the command line for writing.
748a9306
LW
1049
1050=item Can't open input file %s as stdin
1051
be771a83
GS
1052(F) An error peculiar to VMS. Perl does its own command line
1053redirection, and couldn't open the file specified after '<' on the
1054command line for reading.
748a9306
LW
1055
1056=item Can't open output file %s as stdout
1057
be771a83
GS
1058(F) An error peculiar to VMS. Perl does its own command line
1059redirection, and couldn't open the file specified after '>' or '>>' on
1060the command line for writing.
748a9306
LW
1061
1062=item Can't open output pipe (name: %s)
1063
be771a83
GS
1064(P) An error peculiar to VMS. Perl does its own command line
1065redirection, and couldn't open the pipe into which to send data destined
1066for stdout.
748a9306 1067
2b8ca739 1068=item Can't open perl script%s
a0d0e21e
LW
1069
1070(F) The script you specified can't be opened for the indicated reason.
1071
fa3aa65a
JC
1072If you're debugging a script that uses #!, and normally relies on the
1073shell's $PATH search, the -S option causes perl to do that search, so
1074you don't have to type the path or C<`which $scriptname`>.
1075
6df41af2
GS
1076=item Can't read CRTL environ
1077
1078(S) A warning peculiar to VMS. Perl tried to read an element of %ENV
1079from the CRTL's internal environment array and discovered the array was
1080missing. You need to figure out where your CRTL misplaced its environ
be771a83
GS
1081or define F<PERL_ENV_TABLES> (see L<perlvms>) so that environ is not
1082searched.
6df41af2 1083
6df41af2
GS
1084=item Can't "redo" outside a loop block
1085
1086(F) A "redo" statement was executed to restart the current block, but
1087there isn't a current block. Note that an "if" or "else" block doesn't
1088count as a "loopish" block, as doesn't a block given to sort(), map()
1089or grep(). You can usually double the curlies to get the same effect
1090though, because the inner curlies will be considered a block that
1091loops once. See L<perlfunc/redo>.
1092
64977eb6 1093=item Can't remove %s: %s, skipping file
10f9c03d 1094
be771a83
GS
1095(S inplace) You requested an inplace edit without creating a backup
1096file. Perl was unable to remove the original file to replace it with
1097the modified file. The file was left unmodified.
10f9c03d 1098
a0d0e21e
LW
1099=item Can't rename %s to %s: %s, skipping file
1100
e476b1b5 1101(S inplace) The rename done by the B<-i> switch failed for some reason,
10f9c03d 1102probably because you don't have write permission to the directory.
a0d0e21e 1103
748a9306
LW
1104=item Can't reopen input pipe (name: %s) in binary mode
1105
be771a83
GS
1106(P) An error peculiar to VMS. Perl thought stdin was a pipe, and tried
1107to reopen it to accept binary data. Alas, it failed.
748a9306 1108
fe13d51d 1109=item Can't resolve method "%s" overloading "%s" in package "%s"
6df41af2 1110
be771a83
GS
1111(F|P) Error resolving overloading specified by a method name (as opposed
1112to a subroutine reference): no such method callable via the package. If
1113method name is C<???>, this is an internal error.
6df41af2 1114
cd06dffe
GS
1115=item Can't return %s from lvalue subroutine
1116
be771a83
GS
1117(F) Perl detected an attempt to return illegal lvalues (such as
1118temporary or readonly values) from a subroutine used as an lvalue. This
1119is not allowed.
cd06dffe 1120
96ebfdd7
RK
1121=item Can't return outside a subroutine
1122
1123(F) The return statement was executed in mainline code, that is, where
1124there was no subroutine call to return out of. See L<perlsub>.
1125
78f9721b
SM
1126=item Can't return %s to lvalue scalar context
1127
1128(F) You tried to return a complete array or hash from an lvalue subroutine,
1129but you called the subroutine in a way that made Perl think you meant
1130to return only one value. You probably meant to write parentheses around
1131the call to the subroutine, which tell Perl that the call should be in
1132list context.
1133
a0d0e21e
LW
1134=item Can't stat script "%s"
1135
be771a83
GS
1136(P) For some reason you can't fstat() the script even though you have it
1137open already. Bizarre.
a0d0e21e 1138
a0d0e21e
LW
1139=item Can't take log of %g
1140
fb73857a 1141(F) For ordinary real numbers, you can't take the logarithm of a
1142negative number or zero. There's a Math::Complex package that comes
be771a83
GS
1143standard with Perl, though, if you really want to do that for the
1144negative numbers.
a0d0e21e
LW
1145
1146=item Can't take sqrt of %g
1147
1148(F) For ordinary real numbers, you can't take the square root of a
fb73857a 1149negative number. There's a Math::Complex package that comes standard
1150with Perl, though, if you really want to do that.
a0d0e21e
LW
1151
1152=item Can't undef active subroutine
1153
1154(F) You can't undefine a routine that's currently running. You can,
1155however, redefine it while it's running, and you can even undef the
1156redefined subroutine while the old routine is running. Go figure.
1157
1158=item Can't unshift
1159
1160(F) You tried to unshift an "unreal" array that can't be unshifted, such
1161as the main Perl stack.
1162
c81225bc 1163=item Can't upgrade %s (%d) to %d
a0d0e21e 1164
be771a83
GS
1165(P) The internal sv_upgrade routine adds "members" to an SV, making it
1166into a more specialized kind of SV. The top several SV types are so
1167specialized, however, that they cannot be interconverted. This message
1168indicates that such a conversion was attempted.
a0d0e21e 1169
1db89ea5
BS
1170=item Can't use anonymous symbol table for method lookup
1171
e27ad1f2 1172(F) The internal routine that does method lookup was handed a symbol
1db89ea5
BS
1173table that doesn't have a name. Symbol tables can become anonymous
1174for example by undefining stashes: C<undef %Some::Package::>.
1175
96ebfdd7
RK
1176=item Can't use an undefined value as %s reference
1177
1178(F) A value used as either a hard reference or a symbolic reference must
1179be a defined value. This helps to delurk some insidious errors.
1180
6df41af2
GS
1181=item Can't use bareword ("%s") as %s ref while "strict refs" in use
1182
be771a83
GS
1183(F) Only hard references are allowed by "strict refs". Symbolic
1184references are disallowed. See L<perlref>.
6df41af2 1185
90b75b61 1186=item Can't use %! because Errno.pm is not available
1d2dff63
GS
1187
1188(F) The first time the %! hash is used, perl automatically loads the
1189Errno.pm module. The Errno module is expected to tie the %! hash to
1190provide symbolic names for C<$!> errno values.
1191
1109a392
MHM
1192=item Can't use both '<' and '>' after type '%c' in %s
1193
1194(F) A type cannot be forced to have both big-endian and little-endian
1195byte-order at the same time, so this combination of modifiers is not
1196allowed. See L<perlfunc/pack>.
1197
6df41af2
GS
1198=item Can't use %s for loop variable
1199
be771a83
GS
1200(F) Only a simple scalar variable may be used as a loop variable on a
1201foreach.
6df41af2 1202
aab6a793 1203=item Can't use global %s in "%s"
6df41af2 1204
be771a83
GS
1205(F) You tried to declare a magical variable as a lexical variable. This
1206is not allowed, because the magic can be tied to only one location
1207(namely the global variable) and it would be incredibly confusing to
1208have variables in your program that looked like magical variables but
6df41af2
GS
1209weren't.
1210
6d3b25aa
RGS
1211=item Can't use '%c' in a group with different byte-order in %s
1212
1213(F) You attempted to force a different byte-order on a type
1214that is already inside a group with a byte-order modifier.
1215For example you cannot force little-endianness on a type that
1216is inside a big-endian group.
1217
c07a80fd 1218=item Can't use "my %s" in sort comparison
1219
1220(F) The global variables $a and $b are reserved for sort comparisons.
c47ff5f1 1221You mentioned $a or $b in the same line as the <=> or cmp operator,
c07a80fd 1222and the variable had earlier been declared as a lexical variable.
1223Either qualify the sort variable with the package name, or rename the
1224lexical variable.
1225
a0d0e21e
LW
1226=item Can't use %s ref as %s ref
1227
1228(F) You've mixed up your reference types. You have to dereference a
1229reference of the type needed. You can use the ref() function to
1230test the type of the reference, if need be.
1231
748a9306 1232=item Can't use string ("%s") as %s ref while "strict refs" in use
a0d0e21e 1233
be771a83
GS
1234(F) Only hard references are allowed by "strict refs". Symbolic
1235references are disallowed. See L<perlref>.
a0d0e21e 1236
748a9306
LW
1237=item Can't use subscript on %s
1238
1239(F) The compiler tried to interpret a bracketed expression as a
1240subscript. But to the left of the brackets was an expression that
209e7cf1 1241didn't look like a hash or array reference, or anything else subscriptable.
748a9306 1242
6df41af2
GS
1243=item Can't use \%c to mean $%c in expression
1244
75b44862
GS
1245(W syntax) In an ordinary expression, backslash is a unary operator that
1246creates a reference to its argument. The use of backslash to indicate a
1247backreference to a matched substring is valid only as part of a regular
be771a83
GS
1248expression pattern. Trying to do this in ordinary Perl code produces a
1249value that prints out looking like SCALAR(0xdecaf). Use the $1 form
1250instead.
6df41af2 1251
0d863452 1252=item Can't use "when" outside a topicalizer
dc57907a 1253
0d863452
RH
1254(F) You have used a when() block that is neither inside a C<foreach>
1255loop nor a C<given> block. (Note that this error is issued on exit
1256from the C<when> block, so you won't get the error if the match fails,
1257or if you use an explicit C<continue>.)
1258
810b8aa5
GS
1259=item Can't weaken a nonreference
1260
1261(F) You attempted to weaken something that was not a reference. Only
1262references can be weakened.
1263
5f05dabc 1264=item Can't x= to read-only value
a0d0e21e 1265
be771a83
GS
1266(F) You tried to repeat a constant value (often the undefined value)
1267with an assignment operator, which implies modifying the value itself.
a0d0e21e
LW
1268Perhaps you need to copy the value to a temporary, and repeat that.
1269
4a68bf9d 1270=item Character following "\c" must be ASCII
f9d13529 1271
17a3df4c
KW
1272(F|W deprecated, syntax) In C<\cI<X>>, I<X> must be an ASCII character.
1273It is planned to make this fatal in all instances in Perl 5.16. In the
1274cases where it isn't fatal, the character this evaluates to is
1275derived by exclusive or'ing the code point of this character with 0x40.
1276
1277Note that non-alphabetic ASCII characters are discouraged here as well.
f9d13529 1278
f337b084 1279=item Character in 'C' format wrapped in pack
ac7cd81a
SC
1280
1281(W pack) You said
1282
1283 pack("C", $x)
1284
1285where $x is either less than 0 or more than 255; the C<"C"> format is
1286only for encoding native operating system characters (ASCII, EBCDIC,
1287and so on) and not for Unicode characters, so Perl behaved as if you meant
1288
1289 pack("C", $x & 255)
1290
1291If you actually want to pack Unicode codepoints, use the C<"U"> format
1292instead.
1293
f337b084
TH
1294=item Character in 'W' format wrapped in pack
1295
1296(W pack) You said
1297
1298 pack("U0W", $x)
1299
1300where $x is either less than 0 or more than 255. However, C<U0>-mode expects
1301all values to fall in the interval [0, 255], so Perl behaved as if you
1302meant:
1303
1304 pack("U0W", $x & 255)
1305
1306=item Character in 'c' format wrapped in pack
ac7cd81a
SC
1307
1308(W pack) You said
1309
1310 pack("c", $x)
1311
1312where $x is either less than -128 or more than 127; the C<"c"> format
1313is only for encoding native operating system characters (ASCII, EBCDIC,
1314and so on) and not for Unicode characters, so Perl behaved as if you meant
1315
1316 pack("c", $x & 255);
1317
1318If you actually want to pack Unicode codepoints, use the C<"U"> format
1319instead.
1320
f337b084
TH
1321=item Character in '%c' format wrapped in unpack
1322
1323(W unpack) You tried something like
1324
1325 unpack("H", "\x{2a1}")
1326
1a147d38 1327where the format expects to process a byte (a character with a value
f337b084
TH
1328below 256), but a higher value was provided instead. Perl uses the value
1329modulus 256 instead, as if you had provided:
1330
1331 unpack("H", "\x{a1}")
1332
1333=item Character(s) in '%c' format wrapped in pack
1334
1335(W pack) You tried something like
1336
1337 pack("u", "\x{1f3}b")
1338
1a147d38
YO
1339where the format expects to process a sequence of bytes (character with a
1340value below 256), but some of the characters had a higher value. Perl
f337b084
TH
1341uses the character values modulus 256 instead, as if you had provided:
1342
1343 pack("u", "\x{f3}b")
1344
1345=item Character(s) in '%c' format wrapped in unpack
1346
1347(W unpack) You tried something like
1348
1349 unpack("s", "\x{1f3}b")
1350
1a147d38
YO
1351where the format expects to process a sequence of bytes (character with a
1352value below 256), but some of the characters had a higher value. Perl
f337b084
TH
1353uses the character values modulus 256 instead, as if you had provided:
1354
1355 unpack("s", "\x{f3}b")
1356
96ebfdd7
RK
1357=item close() on unopened filehandle %s
1358
1359(W unopened) You tried to close a filehandle that was never opened.
1360
abc7ecad
SP
1361=item closedir() attempted on invalid dirhandle %s
1362
1363(W io) The dirhandle you tried to close is either closed or not really
1364a dirhandle. Check your control flow.
1365
541ed3a9
FC
1366=item Closure prototype called
1367
1368(F) If a closure has attributes, the subroutine passed to an attribute
1369handler is the prototype that is cloned when a new closure is created.
1370This subroutine cannot be called.
1371
49704364
WL
1372=item Code missing after '/'
1373
1374(F) You had a (sub-)template that ends with a '/'. There must be another
1375template code following the slash. See L<perlfunc/pack>.
1376
0876b9a0
KW
1377=item Code point 0x%X is not Unicode, may not be portable
1378
9ae3ac1a
KW
1379=item Code point 0x%X is not Unicode, no properties match it; all inverse properties do
1380
0876b9a0
KW
1381(W utf8) You had a code point above the Unicode maximum of U+10FFFF.
1382
1383Perl allows strings to contain a superset of Unicode code
1384points, up to the limit of what is storable in an unsigned integer on
1385your system, but these may not be accepted by other languages/systems.
1386At one time, it was legal in some standards to have code points up to
13870x7FFF_FFFF, but not higher. Code points above 0xFFFF_FFFF require
1388larger than a 32 bit word.
1389
9ae3ac1a
KW
1390None of the Unicode or Perl-defined properties will match a non-Unicode
1391code point. For example,
1392
1393 chr(0x7FF_FFFF) =~ /\p{Any}/
1394
1395will not match, because the code point is not in Unicode. But
1396
1397 chr(0x7FF_FFFF) =~ /\P{Any}/
1398
1399will match.
1400
6df41af2
GS
1401=item %s: Command not found
1402
be771a83
GS
1403(A) You've accidentally run your script through B<csh> instead of Perl.
1404Check the #! line, or manually feed your script into Perl yourself.
6df41af2 1405
7a2e2cd6 1406=item Compilation failed in require
1407
1408(F) Perl could not compile a file specified in a C<require> statement.
be771a83
GS
1409Perl uses this generic message when none of the errors that it
1410encountered were severe enough to halt compilation immediately.
7a2e2cd6 1411
c3464db5
DD
1412=item Complex regular subexpression recursion limit (%d) exceeded
1413
be771a83
GS
1414(W regexp) The regular expression engine uses recursion in complex
1415situations where back-tracking is required. Recursion depth is limited
1416to 32766, or perhaps less in architectures where the stack cannot grow
1417arbitrarily. ("Simple" and "medium" situations are handled without
1418recursion and are not subject to a limit.) Try shortening the string
1419under examination; looping in Perl code (e.g. with C<while>) rather than
1420in the regular expression engine; or rewriting the regular expression so
c2e66d9e 1421that it is simpler or backtracks less. (See L<perlfaq2> for information
be771a83 1422on I<Mastering Regular Expressions>.)
c3464db5 1423
38875929
DM
1424=item cond_broadcast() called on unlocked variable
1425
1426(W threads) Within a thread-enabled program, you tried to call
1427cond_broadcast() on a variable which wasn't locked. The cond_broadcast()
1428function is used to wake up another thread that is waiting in a
1429cond_wait(). To ensure that the signal isn't sent before the other thread
1430has a chance to enter the wait, it is usual for the signaling thread to
1431first wait for a lock on variable. This lock attempt will only succeed
1432after the other thread has entered cond_wait() and thus relinquished the
1433lock.
1434
38875929
DM
1435=item cond_signal() called on unlocked variable
1436
1437(W threads) Within a thread-enabled program, you tried to call
1438cond_signal() on a variable which wasn't locked. The cond_signal()
1439function is used to wake up another thread that is waiting in a
1440cond_wait(). To ensure that the signal isn't sent before the other thread
1441has a chance to enter the wait, it is usual for the signaling thread to
1442first wait for a lock on variable. This lock attempt will only succeed
1443after the other thread has entered cond_wait() and thus relinquished the
1444lock.
1445
69282e91 1446=item connect() on closed socket %s
a0d0e21e 1447
be771a83
GS
1448(W closed) You tried to do a connect on a closed socket. Did you forget
1449to check the return value of your socket() call? See
1450L<perlfunc/connect>.
a0d0e21e 1451
41ab332f 1452=item Constant(%s)%s: %s
6df41af2 1453
be771a83
GS
1454(F) The parser found inconsistencies either while attempting to define
1455an overloaded constant, or when trying to find the character name
1456specified in the C<\N{...}> escape. Perhaps you forgot to load the
1457corresponding C<overload> or C<charnames> pragma? See L<charnames> and
1458L<overload>.
6df41af2 1459
fc8cd66c
YO
1460=item Constant(%s)%s: %s in regex; marked by <-- HERE in m/%s/
1461
1a147d38
YO
1462(F) The parser found inconsistencies while attempting to find
1463the character name specified in the C<\N{...}> escape. Perhaps you
1464forgot to load the corresponding C<charnames> pragma?
fc8cd66c
YO
1465See L<charnames>.
1466
1467
779c5bc9
GS
1468=item Constant is not %s reference
1469
1470(F) A constant value (perhaps declared using the C<use constant> pragma)
be771a83
GS
1471is being dereferenced, but it amounts to the wrong type of reference.
1472The message indicates the type of reference that was expected. This
1473usually indicates a syntax error in dereferencing the constant value.
779c5bc9
GS
1474See L<perlsub/"Constant Functions"> and L<constant>.
1475
4cee8e80
CS
1476=item Constant subroutine %s redefined
1477
bb028877 1478(S) You redefined a subroutine which had previously been
be771a83
GS
1479eligible for inlining. See L<perlsub/"Constant Functions"> for
1480commentary and workarounds.
4cee8e80 1481
9607fc9c 1482=item Constant subroutine %s undefined
1483
be771a83
GS
1484(W misc) You undefined a subroutine which had previously been eligible
1485for inlining. See L<perlsub/"Constant Functions"> for commentary and
1486workarounds.
9607fc9c 1487
e7ea3e70
IZ
1488=item Copy method did not return a reference
1489
64977eb6 1490(F) The method which overloads "=" is buggy. See
13a2d996 1491L<overload/Copy Constructor>.
e7ea3e70 1492
6798c92b
GS
1493=item CORE::%s is not a keyword
1494
1495(F) The CORE:: namespace is reserved for Perl keywords.
1496
a0d0e21e
LW
1497=item corrupted regexp pointers
1498
1499(P) The regular expression engine got confused by what the regular
1500expression compiler gave it.
1501
1502=item corrupted regexp program
1503
be771a83
GS
1504(P) The regular expression engine got passed a regexp program without a
1505valid magic number.
a0d0e21e 1506
de42a5a9 1507=item Corrupt malloc ptr 0x%x at 0x%x
6df41af2
GS
1508
1509(P) The malloc package that comes with Perl had an internal failure.
1510
49704364
WL
1511=item Count after length/code in unpack
1512
1513(F) You had an unpack template indicating a counted-length string, but
1514you have also specified an explicit size for the string. See
1515L<perlfunc/pack>.
1516
17a3df4c
KW
1517=item "\c{" is deprecated and is more clearly written as ";"
1518
1519(D deprecated, syntax) The C<\cI<X>> construct is intended to be a way
1520to specify non-printable characters. You used it with a "{" which
1521evaluates to ";", which is printable. It is planned to remove the
1522ability to specify a semi-colon this way in Perl 5.16. Just use a
1523semi-colon or a backslash-semi-colon without the "\c".
1524
1525=item "\c%c" is more clearly written simply as "%s"
f9d13529 1526
17a3df4c 1527(W syntax) The C<\cI<X>> construct is intended to be a way to specify
f9d13529 1528non-printable characters. You used it for a printable one, which is better
1408fb84 1529written as simply itself, perhaps preceded by a backslash for non-word
17a3df4c 1530characters.
f9d13529 1531
a0d0e21e
LW
1532=item Deep recursion on subroutine "%s"
1533
be771a83
GS
1534(W recursion) This subroutine has called itself (directly or indirectly)
1535100 times more than it has returned. This probably indicates an
1536infinite recursion, unless you're writing strange benchmark programs, in
1537which case it indicates something else.
a0d0e21e 1538
aad1d01f
NC
1539This threshold can be changed from 100, by recompiling the F<perl> binary,
1540setting the C pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value.
1541
f10b0346 1542=item defined(@array) is deprecated
69794302 1543
be771a83
GS
1544(D deprecated) defined() is not usually useful on arrays because it
1545checks for an undefined I<scalar> value. If you want to see if the
64977eb6 1546array is empty, just use C<if (@array) { # not empty }> for example.
69794302 1547
f10b0346 1548=item defined(%hash) is deprecated
69794302 1549
be771a83
GS
1550(D deprecated) defined() is not usually useful on hashes because it
1551checks for an undefined I<scalar> value. If you want to see if the hash
64977eb6 1552is empty, just use C<if (%hash) { # not empty }> for example.
69794302 1553
62658f4d
PM
1554=item %s defines neither package nor VERSION--version check failed
1555
1556(F) You said something like "use Module 42" but in the Module file
1557there are neither package declarations nor a C<$VERSION>.
1558
fc36a67e 1559=item Delimiter for here document is too long
1560
be771a83
GS
1561(F) In a here document construct like C<<<FOO>, the label C<FOO> is too
1562long for Perl to handle. You have to be seriously twisted to write code
1563that triggers this error.
fc36a67e 1564
4a68bf9d 1565=item Deprecated character in \N{...}; marked by <-- HERE in \N{%s<-- HERE %s
cb233ae3
KW
1566
1567(D deprecated) Just about anything is legal for the C<...> in C<\N{...}>.
1568But starting in 5.12, non-reasonable ones that don't look like names are
1569deprecated. A reasonable name begins with an alphabetic character and
1570continues with any combination of alphanumerics, dashes, spaces, parentheses or
1571colons.
1572
6d3b25aa
RGS
1573=item Deprecated use of my() in false conditional
1574
1575(D deprecated) You used a declaration similar to C<my $x if 0>.
1576There has been a long-standing bug in Perl that causes a lexical variable
1577not to be cleared at scope exit when its declaration includes a false
1578conditional. Some people have exploited this bug to achieve a kind of
1579static variable. Since we intend to fix this bug, we don't want people
1580relying on this behavior. You can achieve a similar static effect by
1581declaring the variable in a separate block outside the function, eg
36fb85f3 1582
6d3b25aa
RGS
1583 sub f { my $x if 0; return $x++ }
1584
1585becomes
1586
1587 { my $x; sub f { return $x++ } }
1588
36fb85f3
RGS
1589Beginning with perl 5.9.4, you can also use C<state> variables to
1590have lexicals that are initialized only once (see L<feature>):
1591
1592 sub f { state $x; return $x++ }
1593
500ab966
RGS
1594=item DESTROY created new reference to dead object '%s'
1595
1596(F) A DESTROY() method created a new reference to the object which is
1597just being DESTROYed. Perl is confused, and prefers to abort rather than
1598to create a dangling reference.
1599
3cdd684c
TP
1600=item Did not produce a valid header
1601
1602See Server error.
1603
6df41af2
GS
1604=item %s did not return a true value
1605
1606(F) A required (or used) file must return a true value to indicate that
1607it compiled correctly and ran its initialization code correctly. It's
1608traditional to end such a file with a "1;", though any true value would
1609do. See L<perlfunc/require>.
1610
cc507455 1611=item (Did you mean &%s instead?)
4633a7c4 1612
413ff9f6
FC
1613(W misc) You probably referred to an imported subroutine &FOO as $FOO or
1614some such.
4633a7c4 1615
cc507455 1616=item (Did you mean "local" instead of "our"?)
33633739 1617
be771a83
GS
1618(W misc) Remember that "our" does not localize the declared global
1619variable. You have declared it again in the same lexical scope, which
1620seems superfluous.
33633739 1621
cc507455 1622=item (Did you mean $ or @ instead of %?)
a0d0e21e 1623
be771a83
GS
1624(W) You probably said %hash{$key} when you meant $hash{$key} or
1625@hash{@keys}. On the other hand, maybe you just meant %hash and got
1626carried away.
748a9306 1627
7e1af8bc 1628=item Died
5f05dabc 1629
1630(F) You passed die() an empty string (the equivalent of C<die "">) or
1631you called it with no args and both C<$@> and C<$_> were empty.
1632
3cdd684c
TP
1633=item Document contains no data
1634
1635See Server error.
1636
62658f4d
PM
1637=item %s does not define %s::VERSION--version check failed
1638
1639(F) You said something like "use Module 42" but the Module did not
1640define a C<$VERSION.>
1641
49704364
WL
1642=item '/' does not take a repeat count
1643
1644(F) You cannot put a repeat count of any kind right after the '/' code.
1645See L<perlfunc/pack>.
1646
a0d0e21e
LW
1647=item Don't know how to handle magic of type '%s'
1648
1649(P) The internal handling of magical variables has been cursed.
1650
1651=item do_study: out of memory
1652
1653(P) This should have been caught by safemalloc() instead.
1654
6df41af2
GS
1655=item (Do you need to predeclare %s?)
1656
56da5a46
RGS
1657(S syntax) This is an educated guess made in conjunction with the message
1658"%s found where operator expected". It often means a subroutine or module
6df41af2
GS
1659name is being referenced that hasn't been declared yet. This may be
1660because of ordering problems in your file, or because of a missing
be771a83
GS
1661"sub", "package", "require", or "use" statement. If you're referencing
1662something that isn't defined yet, you don't actually have to define the
1663subroutine or package before the current location. You can use an empty
1664"sub foo;" or "package FOO;" to enter a "forward" declaration.
6df41af2 1665
ac206dc8
RGS
1666=item dump() better written as CORE::dump()
1667
1668(W misc) You used the obsolescent C<dump()> built-in function, without fully
1669qualifying it as C<CORE::dump()>. Maybe it's a typo. See L<perlfunc/dump>.
1670
84d78eb7
YO
1671=item dump is not supported
1672
1673(F) Your machine doesn't support dump/undump.
1674
a0d0e21e
LW
1675=item Duplicate free() ignored
1676
be771a83
GS
1677(S malloc) An internal routine called free() on something that had
1678already been freed.
a0d0e21e 1679
1109a392
MHM
1680=item Duplicate modifier '%c' after '%c' in %s
1681
1682(W) You have applied the same modifier more than once after a type
1683in a pack template. See L<perlfunc/pack>.
1684
4633a7c4
LW
1685=item elseif should be elsif
1686
56da5a46
RGS
1687(S syntax) There is no keyword "elseif" in Perl because Larry thinks it's
1688ugly. Your code will be interpreted as an attempt to call a method named
be771a83 1689"elseif" for the class returned by the following block. This is
4633a7c4
LW
1690unlikely to be what you want.
1691
ab13f0c7
JH
1692=item Empty %s
1693
af6f566e
HS
1694(F) C<\p> and C<\P> are used to introduce a named Unicode property, as
1695described in L<perlunicode> and L<perlre>. You used C<\p> or C<\P> in
1696a regular expression without specifying the property name.
ab13f0c7 1697
85ab1d1d 1698=item entering effective %s failed
5ff3f7a4 1699
85ab1d1d 1700(F) While under the C<use filetest> pragma, switching the real and
5ff3f7a4
GS
1701effective uids or gids failed.
1702
c038024b
RGS
1703=item %ENV is aliased to %s
1704
1705(F) You're running under taint mode, and the C<%ENV> variable has been
1706aliased to another hash, so it doesn't reflect anymore the state of the
1707program's environment. This is potentially insecure.
1708
748a9306
LW
1709=item Error converting file specification %s
1710
5f05dabc 1711(F) An error peculiar to VMS. Because Perl may have to deal with file
748a9306 1712specifications in either VMS or Unix syntax, it converts them to a
be771a83
GS
1713single form when it must operate on them directly. Either you've passed
1714an invalid file specification to Perl, or you've found a case the
1715conversion routines don't handle. Drat.
748a9306 1716
e4d48cc9
GS
1717=item %s: Eval-group in insecure regular expression
1718
be771a83
GS
1719(F) Perl detected tainted data when trying to compile a regular
1720expression that contains the C<(?{ ... })> zero-width assertion, which
1721is unsafe. See L<perlre/(?{ code })>, and L<perlsec>.
e4d48cc9 1722
fc8f615e 1723=item %s: Eval-group not allowed at runtime, use re 'eval'
e4d48cc9 1724
be771a83
GS
1725(F) Perl tried to compile a regular expression containing the
1726C<(?{ ... })> zero-width assertion at run time, as it would when the
1727pattern contains interpolated values. Since that is a security risk, it
1728is not allowed. If you insist, you may still do this by explicitly
1729building the pattern from an interpolated string at run time and using
1730that in an eval(). See L<perlre/(?{ code })>.
e4d48cc9 1731
6df41af2
GS
1732=item %s: Eval-group not allowed, use re 'eval'
1733
be771a83
GS
1734(F) A regular expression contained the C<(?{ ... })> zero-width
1735assertion, but that construct is only allowed when the C<use re 'eval'>
1736pragma is in effect. See L<perlre/(?{ code })>.
6df41af2 1737
1a147d38
YO
1738=item EVAL without pos change exceeded limit in regex; marked by <-- HERE in m/%s/
1739
1740(F) You used a pattern that nested too many EVAL calls without consuming
1741any text. Restructure the pattern so that text is consumed.
1742
1743The <-- HERE shows in the regular expression about where the problem was
1744discovered.
1745
fc36a67e 1746=item Excessively long <> operator
1747
1748(F) The contents of a <> operator may not exceed the maximum size of a
1749Perl identifier. If you're just trying to glob a long list of
1750filenames, try using the glob() operator, or put the filenames into a
1751variable and glob that.
1752
ed9aa3b7
SG
1753=item exec? I'm not *that* kind of operating system
1754
1755(F) The C<exec> function is not implemented in MacPerl. See L<perlport>.
1756
fe13d51d 1757=item Execution of %s aborted due to compilation errors.
a0d0e21e
LW
1758
1759(F) The final summary message when a Perl compilation fails.
1760
1761=item Exiting eval via %s
1762
be771a83
GS
1763(W exiting) You are exiting an eval by unconventional means, such as a
1764goto, or a loop control statement.
e476b1b5
GS
1765
1766=item Exiting format via %s
1767
9a2ff54b 1768(W exiting) You are exiting a format by unconventional means, such as a
be771a83 1769goto, or a loop control statement.
a0d0e21e 1770
0a753a76 1771=item Exiting pseudo-block via %s
1772
be771a83
GS
1773(W exiting) You are exiting a rather special block construct (like a
1774sort block or subroutine) by unconventional means, such as a goto, or a
1775loop control statement. See L<perlfunc/sort>.
0a753a76 1776
a0d0e21e
LW
1777=item Exiting subroutine via %s
1778
be771a83
GS
1779(W exiting) You are exiting a subroutine by unconventional means, such
1780as a goto, or a loop control statement.
a0d0e21e
LW
1781
1782=item Exiting substitution via %s
1783
be771a83
GS
1784(W exiting) You are exiting a substitution by unconventional means, such
1785as a return, a goto, or a loop control statement.
a0d0e21e 1786
7b8d334a
GS
1787=item Explicit blessing to '' (assuming package main)
1788
be771a83
GS
1789(W misc) You are blessing a reference to a zero length string. This has
1790the effect of blessing the reference into the package main. This is
1791usually not what you want. Consider providing a default target package,
1792e.g. bless($ref, $p || 'MyPackage');
7b8d334a 1793
6df41af2
GS
1794=item %s: Expression syntax
1795
be771a83
GS
1796(A) You've accidentally run your script through B<csh> instead of Perl.
1797Check the #! line, or manually feed your script into Perl yourself.
6df41af2
GS
1798
1799=item %s failed--call queue aborted
1800
3c10abe3
AG
1801(F) An untrapped exception was raised while executing a UNITCHECK,
1802CHECK, INIT, or END subroutine. Processing of the remainder of the
1803queue of such routines has been prematurely ended.
6df41af2 1804
7253e4e3 1805=item False [] range "%s" in regex; marked by <-- HERE in m/%s/
73b437c8 1806
be771a83 1807(W regexp) A character class range must start and end at a literal
7253e4e3
RK
1808character, not another character class like C<\d> or C<[:alpha:]>. The "-"
1809in your false range is interpreted as a literal "-". Consider quoting the
1810"-", "\-". The <-- HERE shows in the regular expression about where the
1811problem was discovered. See L<perlre>.
73b437c8 1812
1b1ee2ef 1813=item Fatal VMS error (status=%d) at %s, line %d
a0d0e21e 1814
be771a83
GS
1815(P) An error peculiar to VMS. Something untoward happened in a VMS
1816system service or RTL routine; Perl's exit status should provide more
1817details. The filename in "at %s" and the line number in "line %d" tell
1818you which section of the Perl source code is distressed.
a0d0e21e
LW
1819
1820=item fcntl is not implemented
1821
1822(F) Your machine apparently doesn't implement fcntl(). What is this, a
1823PDP-11 or something?
1824
22846ab4
AB
1825=item FETCHSIZE returned a negative value
1826
1827(F) A tied array claimed to have a negative number of elements, which
1828is not possible.
1829
f337b084
TH
1830=item Field too wide in 'u' format in pack
1831
1832(W pack) Each line in an uuencoded string start with a length indicator
1833which can't encode values above 63. So there is no point in asking for
1834a line length bigger than that. Perl will behave as if you specified
1835C<u63> as format.
1836
af8c498a 1837=item Filehandle %s opened only for input
a0d0e21e 1838
6c8d78fb
HS
1839(W io) You tried to write on a read-only filehandle. If you intended
1840it to be a read-write filehandle, you needed to open it with "+<" or
1841"+>" or "+>>" instead of with "<" or nothing. If you intended only to
1842write the file, use ">" or ">>". See L<perlfunc/open>.
a0d0e21e 1843
af8c498a 1844=item Filehandle %s opened only for output
a0d0e21e 1845
6c8d78fb
HS
1846(W io) You tried to read from a filehandle opened only for writing, If
1847you intended it to be a read/write filehandle, you needed to open it
be771a83
GS
1848with "+<" or "+>" or "+>>" instead of with "<" or nothing. If you
1849intended only to read from the file, use "<". See L<perlfunc/open>.
6c8d78fb
HS
1850Another possibility is that you attempted to open filedescriptor 0
1851(also known as STDIN) for output (maybe you closed STDIN earlier?).
97828cef
RGS
1852
1853=item Filehandle %s reopened as %s only for input
1854
1855(W io) You opened for reading a filehandle that got the same filehandle id
d7f8936a 1856as STDOUT or STDERR. This occurred because you closed STDOUT or STDERR
97828cef
RGS
1857previously.
1858
1859=item Filehandle STDIN reopened as %s only for output
1860
1861(W io) You opened for writing a filehandle that got the same filehandle id
d7f8936a 1862as STDIN. This occurred because you closed STDIN previously.
a0d0e21e
LW
1863
1864=item Final $ should be \$ or $name
1865
1866(F) You must now decide whether the final $ in a string was meant to be
be771a83
GS
1867a literal dollar sign, or was meant to introduce a variable name that
1868happens to be missing. So you have to put either the backslash or the
1869name.
a0d0e21e 1870
56e90b21
GS
1871=item flock() on closed filehandle %s
1872
be771a83 1873(W closed) The filehandle you're attempting to flock() got itself closed
c289d2f7 1874some time before now. Check your control flow. flock() operates on
be771a83
GS
1875filehandles. Are you attempting to call flock() on a dirhandle by the
1876same name?
56e90b21 1877
6df41af2
GS
1878=item Format not terminated
1879
1880(F) A format must be terminated by a line with a solitary dot. Perl got
1881to the end of your file without finding such a line.
1882
a0d0e21e
LW
1883=item Format %s redefined
1884
e476b1b5 1885(W redefine) You redefined a format. To suppress this warning, say
a0d0e21e
LW
1886
1887 {
271595cc 1888 no warnings 'redefine';
a0d0e21e
LW
1889 eval "format NAME =...";
1890 }
1891
a0d0e21e
LW
1892=item Found = in conditional, should be ==
1893
e476b1b5 1894(W syntax) You said
a0d0e21e
LW
1895
1896 if ($foo = 123)
1897
1898when you meant
1899
1900 if ($foo == 123)
1901
1902(or something like that).
1903
6df41af2
GS
1904=item %s found where operator expected
1905
56da5a46
RGS
1906(S syntax) The Perl lexer knows whether to expect a term or an operator.
1907If it sees what it knows to be a term when it was expecting to see an
be771a83
GS
1908operator, it gives you this warning. Usually it indicates that an
1909operator or delimiter was omitted, such as a semicolon.
6df41af2 1910
a0d0e21e
LW
1911=item gdbm store returned %d, errno %d, key "%s"
1912
1913(S) A warning from the GDBM_File extension that a store failed.
1914
1915=item gethostent not implemented
1916
1917(F) Your C library apparently doesn't implement gethostent(), probably
1918because if it did, it'd feel morally obligated to return every hostname
1919on the Internet.
1920
69282e91 1921=item get%sname() on closed socket %s
a0d0e21e 1922
be771a83
GS
1923(W closed) You tried to get a socket or peer socket name on a closed
1924socket. Did you forget to check the return value of your socket() call?
a0d0e21e 1925
748a9306
LW
1926=item getpwnam returned invalid UIC %#o for user "%s"
1927
1928(S) A warning peculiar to VMS. The call to C<sys$getuai> underlying the
1929C<getpwnam> operator returned an invalid UIC.
1930
6df41af2
GS
1931=item getsockopt() on closed socket %s
1932
be771a83
GS
1933(W closed) You tried to get a socket option on a closed socket. Did you
1934forget to check the return value of your socket() call? See
6df41af2
GS
1935L<perlfunc/getsockopt>.
1936
1937=item Global symbol "%s" requires explicit package name
1938
a4edf47d 1939(F) You've said "use strict" or "use strict vars", which indicates
30c282f6 1940that all variables must either be lexically scoped (using "my" or "state"),
a4edf47d
GS
1941declared beforehand using "our", or explicitly qualified to say
1942which package the global variable is in (using "::").
6df41af2 1943
e476b1b5
GS
1944=item glob failed (%s)
1945
be771a83
GS
1946(W glob) Something went wrong with the external program(s) used for
1947C<glob> and C<< <*.c> >>. Usually, this means that you supplied a
1948C<glob> pattern that caused the external program to fail and exit with a
1949nonzero status. If the message indicates that the abnormal exit
1950resulted in a coredump, this may also mean that your csh (C shell) is
1951broken. If so, you should change all of the csh-related variables in
1952config.sh: If you have tcsh, make the variables refer to it as if it
1953were csh (e.g. C<full_csh='/usr/bin/tcsh'>); otherwise, make them all
1954empty (except that C<d_csh> should be C<'undef'>) so that Perl will
1955think csh is missing. In either case, after editing config.sh, run
75b44862 1956C<./Configure -S> and rebuild Perl.
e476b1b5 1957
a0d0e21e
LW
1958=item Glob not terminated
1959
1960(F) The lexer saw a left angle bracket in a place where it was expecting
be771a83
GS
1961a term, so it's looking for the corresponding right angle bracket, and
1962not finding it. Chances are you left some needed parentheses out
1963earlier in the line, and you really meant a "less than".
a0d0e21e 1964
bcd05b94 1965=item gmtime(%f) too large
8b56d6ff 1966
fc003d4b
MS
1967(W overflow) You called C<gmtime> with an number that was larger than
1968it can reliably handle and C<gmtime> probably returned the wrong
1969date. This warning is also triggered with nan (the special
1970not-a-number value).
1971
bcd05b94 1972=item gmtime(%f) too small
fc003d4b
MS
1973
1974(W overflow) You called C<gmtime> with an number that was smaller than
1975it can reliably handle and C<gmtime> probably returned the wrong
1976date. This warning is also triggered with nan (the special
1977not-a-number value).
8b56d6ff 1978
6df41af2 1979=item Got an error from DosAllocMem
a0d0e21e 1980
6df41af2
GS
1981(P) An error peculiar to OS/2. Most probably you're using an obsolete
1982version of Perl, and this should not happen anyway.
a0d0e21e
LW
1983
1984=item goto must have label
1985
1986(F) Unlike with "next" or "last", you're not allowed to goto an
1987unspecified destination. See L<perlfunc/goto>.
1988
49704364 1989=item ()-group starts with a count
18529408 1990
49704364 1991(F) A ()-group started with a count. A count is
18529408 1992supposed to follow something: a template character or a ()-group.
49704364 1993 See L<perlfunc/pack>.
18529408 1994
fe13d51d 1995=item %s had compilation errors.
6df41af2
GS
1996
1997(F) The final summary message when a C<perl -c> fails.
1998
a0d0e21e
LW
1999=item Had to create %s unexpectedly
2000
be771a83
GS
2001(S internal) A routine asked for a symbol from a symbol table that ought
2002to have existed already, but for some reason it didn't, and had to be
2003created on an emergency basis to prevent a core dump.
a0d0e21e
LW
2004
2005=item Hash %%s missing the % in argument %d of %s()
2006
be771a83
GS
2007(D deprecated) Really old Perl let you omit the % on hash names in some
2008spots. This is now heavily deprecated.
a0d0e21e 2009
6df41af2
GS
2010=item %s has too many errors
2011
2012(F) The parser has given up trying to parse the program after 10 errors.
2013Further error messages would likely be uninformative.
2014
e6897b1a
KW
2015=item Having no space between pattern and following word is deprecated
2016
2017(D syntax)
2018
2019You had a word that isn't a regex modifier immediately following a pattern
2020without an intervening space. For example, the two constructs:
2021
2022 $a =~ m/$foo/sand $bar
2023 $a =~ m/$foo/s and $bar
2024
2025both currently mean the same thing, but it is planned to disallow the first form
2026in Perl 5.16. And,
2027
2028 $a =~ m/$foo/and $bar
2029
2030will be disallowed too.
2031
252aa082
JH
2032=item Hexadecimal number > 0xffffffff non-portable
2033
e476b1b5 2034(W portable) The hexadecimal number you specified is larger than 2**32-1
9e24b6e2
JH
2035(4294967295) and therefore non-portable between systems. See
2036L<perlport> for more on portability concerns.
252aa082 2037
8903cb82 2038=item Identifier too long
2039
2040(F) Perl limits identifiers (names for variables, functions, etc.) to
fc36a67e 2041about 250 characters for simple names, and somewhat more for compound
be771a83
GS
2042names (like C<$A::B>). You've exceeded Perl's limits. Future versions
2043of Perl are likely to eliminate these arbitrary limitations.
8903cb82 2044
c3c41406 2045=item Ignoring zero length \N{} in character class
fc8cd66c 2046
ff3f963a
KW
2047(W) Named Unicode character escapes (\N{...}) may return a
2048zero length sequence. When such an escape is used in a character class
1a147d38 2049its behaviour is not well defined. Check that the correct escape has
fc8cd66c
YO
2050been used, and the correct charname handler is in scope.
2051
6df41af2 2052=item Illegal binary digit %s
f675dbe5 2053
6df41af2 2054(F) You used a digit other than 0 or 1 in a binary number.
f675dbe5 2055
6df41af2 2056=item Illegal binary digit %s ignored
a0d0e21e 2057
be771a83
GS
2058(W digit) You may have tried to use a digit other than 0 or 1 in a
2059binary number. Interpretation of the binary number stopped before the
2060offending digit.
a0d0e21e 2061
78d0fecf 2062=item Illegal character \%o (carriage return)
4fdae800 2063
d5898338 2064(F) Perl normally treats carriage returns in the program text as it
be771a83
GS
2065would any other whitespace, which means you should never see this error
2066when Perl was built using standard options. For some reason, your
2067version of Perl appears to have been built without this support. Talk
2068to your Perl administrator.
4fdae800 2069
d37a9538
ST
2070=item Illegal character in prototype for %s : %s
2071
197afce1
MT
2072(W illegalproto) An illegal character was found in a prototype declaration.
2073Legal characters in prototypes are $, @, %, *, ;, [, ], &, and \.
d37a9538 2074
904d85c5
RGS
2075=item Illegal declaration of anonymous subroutine
2076
2077(F) When using the C<sub> keyword to construct an anonymous subroutine,
2078you must always specify a block of code. See L<perlsub>.
2079
8e742a20
MHM
2080=item Illegal declaration of subroutine %s
2081
2082(F) A subroutine was not declared correctly. See L<perlsub>.
2083
a0d0e21e
LW
2084=item Illegal division by zero
2085
be771a83
GS
2086(F) You tried to divide a number by 0. Either something was wrong in
2087your logic, or you need to put a conditional in to guard against
2088meaningless input.
a0d0e21e 2089
6df41af2
GS
2090=item Illegal hexadecimal digit %s ignored
2091
be771a83
GS
2092(W digit) You may have tried to use a character other than 0 - 9 or
2093A - F, a - f in a hexadecimal number. Interpretation of the hexadecimal
2094number stopped before the illegal character.
6df41af2 2095
a0d0e21e
LW
2096=item Illegal modulus zero
2097
be771a83
GS
2098(F) You tried to divide a number by 0 to get the remainder. Most
2099numbers don't take to this kindly.
a0d0e21e 2100
6df41af2 2101=item Illegal number of bits in vec
399388f4 2102
6df41af2
GS
2103(F) The number of bits in vec() (the third argument) must be a power of
2104two from 1 to 32 (or 64, if your platform supports that).
399388f4
GS
2105
2106=item Illegal octal digit %s
a0d0e21e 2107
d1be9408 2108(F) You used an 8 or 9 in an octal number.
a0d0e21e 2109
399388f4 2110=item Illegal octal digit %s ignored
748a9306 2111
d1be9408 2112(W digit) You may have tried to use an 8 or 9 in an octal number.
75b44862 2113Interpretation of the octal number stopped before the 8 or 9.
748a9306 2114
fe13d51d 2115=item Illegal switch in PERL5OPT: -%c
6ff81951 2116
6df41af2 2117(X) The PERL5OPT environment variable may only be used to set the
646ca9b2 2118following switches: B<-[CDIMUdmtw]>.
6ff81951 2119
6df41af2 2120=item Ill-formed CRTL environ value "%s"
81e118e0 2121
75b44862 2122(W internal) A warning peculiar to VMS. Perl tried to read the CRTL's
be771a83
GS
2123internal environ array, and encountered an element without the C<=>
2124delimiter used to separate keys from values. The element is ignored.
09bef843 2125
6df41af2 2126=item Ill-formed message in prime_env_iter: |%s|
54310121 2127
be771a83
GS
2128(W internal) A warning peculiar to VMS. Perl tried to read a logical
2129name or CLI symbol definition when preparing to iterate over %ENV, and
2130didn't see the expected delimiter between key and value, so the line was
2131ignored.
54310121 2132
6df41af2 2133=item (in cleanup) %s
9607fc9c 2134
be771a83
GS
2135(W misc) This prefix usually indicates that a DESTROY() method raised
2136the indicated exception. Since destructors are usually called by the
2137system at arbitrary points during execution, and often a vast number of
2138times, the warning is issued only once for any number of failures that
2139would otherwise result in the same message being repeated.
6df41af2 2140
be771a83
GS
2141Failure of user callbacks dispatched using the C<G_KEEPERR> flag could
2142also result in this warning. See L<perlcall/G_KEEPERR>.
9607fc9c 2143
2c7d6b9c
RGS
2144=item Inconsistent hierarchy during C3 merge of class '%s': merging failed on parent '%s'
2145
2146(F) The method resolution order (MRO) of the given class is not
2147C3-consistent, and you have enabled the C3 MRO for this class. See the C3
2148documentation in L<mro> for more information.
2149
979699d9
JH
2150=item In EBCDIC the v-string components cannot exceed 2147483647
2151
2152(F) An error peculiar to EBCDIC. Internally, v-strings are stored as
2153Unicode code points, and encoded in EBCDIC as UTF-EBCDIC. The UTF-EBCDIC
2154encoding is limited to code points no larger than 2147483647 (0x7FFFFFFF).
2155
1a147d38
YO
2156=item Infinite recursion in regex; marked by <-- HERE in m/%s/
2157
2158(F) You used a pattern that references itself without consuming any input
2159text. You should check the pattern to ensure that recursive patterns
2160either consume text or fail.
2161
2162The <-- HERE shows in the regular expression about where the problem was
2163discovered.
2164
6dbe9451
NC
2165=item Initialization of state variables in list context currently forbidden
2166
2167(F) Currently the implementation of "state" only permits the initialization
2168of scalar variables in scalar context. Re-write C<state ($a) = 42> as
2169C<state $a = 42> to change from list to scalar context. Constructions such
2170as C<state (@a) = foo()> will be supported in a future perl release.
2171
a0d0e21e
LW
2172=item Insecure dependency in %s
2173
8b1a09fc 2174(F) You tried to do something that the tainting mechanism didn't like.
be771a83
GS
2175The tainting mechanism is turned on when you're running setuid or
2176setgid, or when you specify B<-T> to turn it on explicitly. The
2177tainting mechanism labels all data that's derived directly or indirectly
2178from the user, who is considered to be unworthy of your trust. If any
2179such data is used in a "dangerous" operation, you get this error. See
2180L<perlsec> for more information.
a0d0e21e
LW
2181
2182=item Insecure directory in %s
2183
be771a83
GS
2184(F) You can't use system(), exec(), or a piped open in a setuid or
2185setgid script if C<$ENV{PATH}> contains a directory that is writable by
df98f984
RGS
2186the world. Also, the PATH must not contain any relative directory.
2187See L<perlsec>.
a0d0e21e 2188
62f468fc 2189=item Insecure $ENV{%s} while running %s
a0d0e21e
LW
2190
2191(F) You can't use system(), exec(), or a piped open in a setuid or
62f468fc 2192setgid script if any of C<$ENV{PATH}>, C<$ENV{IFS}>, C<$ENV{CDPATH}>,
332d5f78
SR
2193C<$ENV{ENV}>, C<$ENV{BASH_ENV}> or C<$ENV{TERM}> are derived from data
2194supplied (or potentially supplied) by the user. The script must set
2195the path to a known value, using trustworthy data. See L<perlsec>.
a0d0e21e 2196
a7ae9550
GS
2197=item Integer overflow in %s number
2198
75b44862 2199(W overflow) The hexadecimal, octal or binary number you have specified
be771a83
GS
2200either as a literal or as an argument to hex() or oct() is too big for
2201your architecture, and has been converted to a floating point number.
2202On a 32-bit architecture the largest hexadecimal, octal or binary number
9e24b6e2
JH
2203representable without overflow is 0xFFFFFFFF, 037777777777, or
22040b11111111111111111111111111111111 respectively. Note that Perl
2205transparently promotes all numbers to a floating point representation
2206internally--subject to loss of precision errors in subsequent
2207operations.
bbce6d69 2208
2fba7546
GA
2209=item Integer overflow in format string for %s
2210
0be96356
AL
2211(F) The indexes and widths specified in the format string of C<printf()>
2212or C<sprintf()> are too large. The numbers must not overflow the size of
2fba7546
GA
2213integers for your architecture.
2214
46314c13
JP
2215=item Integer overflow in version
2216
2217(F) Some portion of a version initialization is too large for the
2218size of integers for your architecture. This is not a warning
2219because there is no rational reason for a version to try and use a
2220element larger than typically 2**32. This is usually caused by
2221trying to use some odd mathematical operation as a version, like
2222100/9.
2223
7253e4e3 2224=item Internal disaster in regex; marked by <-- HERE in m/%s/
6df41af2
GS
2225
2226(P) Something went badly wrong in the regular expression parser.
7253e4e3 2227The <-- HERE shows in the regular expression about where the problem was
b45f050a
JF
2228discovered.
2229
748a9306
LW
2230=item Internal inconsistency in tracking vforks
2231
be771a83
GS
2232(S) A warning peculiar to VMS. Perl keeps track of the number of times
2233you've called C<fork> and C<exec>, to determine whether the current call
2234to C<exec> should affect the current script or a subprocess (see
2235L<perlvms/"exec LIST">). Somehow, this count has become scrambled, so
2236Perl is making a guess and treating this C<exec> as a request to
2237terminate the Perl script and execute the specified command.
748a9306 2238
7253e4e3 2239=item Internal urp in regex; marked by <-- HERE in m/%s/
b45f050a 2240
7253e4e3
RK
2241(P) Something went badly awry in the regular expression parser. The
2242<-- HERE shows in the regular expression about where the problem was
2243discovered.
a0d0e21e 2244
6df41af2
GS
2245=item %s (...) interpreted as function
2246
75b44862 2247(W syntax) You've run afoul of the rule that says that any list operator
be771a83 2248followed by parentheses turns into a function, with all the list
64977eb6 2249operators arguments found inside the parentheses. See
13a2d996 2250L<perlop/Terms and List Operators (Leftward)>.
6df41af2 2251
09bef843
SB
2252=item Invalid %s attribute: %s
2253
a4a4c9e2 2254(F) The indicated attribute for a subroutine or variable was not recognized
09bef843
SB
2255by Perl or by a user-supplied handler. See L<attributes>.
2256
2257=item Invalid %s attributes: %s
2258
a4a4c9e2 2259(F) The indicated attributes for a subroutine or variable were not
be771a83 2260recognized by Perl or by a user-supplied handler. See L<attributes>.
09bef843 2261
c635e13b 2262=item Invalid conversion in %s: "%s"
2263
be771a83
GS
2264(W printf) Perl does not understand the given format conversion. See
2265L<perlfunc/sprintf>.
c635e13b 2266
9e08bc66
TS
2267=item Invalid escape in the specified encoding in regex; marked by <-- HERE in m/%s/
2268
2269(W regexp) The numeric escape (for example C<\xHH>) of value < 256
2270didn't correspond to a single character through the conversion
2271from the encoding specified by the encoding pragma.
2272The escape was replaced with REPLACEMENT CHARACTER (U+FFFD) instead.
2273The <-- HERE shows in the regular expression about where the
2274escape was discovered.
2275
2c7d6b9c
RGS
2276=item Invalid mro name: '%s'
2277
2278(F) You tried to C<mro::set_mro("classname", "foo")>
2279or C<use mro 'foo'>, where C<foo> is not a valid method resolution order (MRO).
2280(Currently, the only valid ones are C<dfs> and C<c3>). See L<mro>.
2281
7253e4e3 2282=item Invalid [] range "%s" in regex; marked by <-- HERE in m/%s/
6df41af2
GS
2283
2284(F) The range specified in a character class had a minimum character
7253e4e3
RK
2285greater than the maximum character. One possibility is that you forgot the
2286C<{}> from your ending C<\x{}> - C<\x> without the curly braces can go only
2287up to C<ff>. The <-- HERE shows in the regular expression about where the
2288problem was discovered. See L<perlre>.
6df41af2 2289
d1573ac7 2290=item Invalid range "%s" in transliteration operator
c2e66d9e
GS
2291
2292(F) The range specified in the tr/// or y/// operator had a minimum
2293character greater than the maximum character. See L<perlop>.
2294
09bef843
SB
2295=item Invalid separator character %s in attribute list
2296
0120eecf 2297(F) Something other than a colon or whitespace was seen between the
be771a83
GS
2298elements of an attribute list. If the previous attribute had a
2299parenthesised parameter list, perhaps that list was terminated too soon.
2300See L<attributes>.
09bef843 2301
b4581f09
JH
2302=item Invalid separator character %s in PerlIO layer specification %s
2303
2304(W layer) When pushing layers onto the Perl I/O system, something other than a
2305colon or whitespace was seen between the elements of a layer list.
2306If the previous attribute had a parenthesised parameter list, perhaps that
2307list was terminated too soon.
2308
2c86d456
DG
2309=item Invalid strict version format (%s)
2310
2311(F) A version number did not meet the "strict" criteria for versions.
2312A "strict" version number is a positive decimal number (integer or
2313decimal-fraction) without exponentiation or else a dotted-decimal
2314v-string with a leading 'v' character and at least three components.
a6485a24 2315The parenthesized text indicates which criteria were not met.
2c86d456
DG
2316See the L<version> module for more details on allowed version formats.
2317
49704364 2318=item Invalid type '%s' in %s
96e4d5b1 2319
49704364
WL
2320(F) The given character is not a valid pack or unpack type.
2321See L<perlfunc/pack>.
2322(W) The given character is not a valid pack or unpack type but used to be
75b44862 2323silently ignored.
96e4d5b1 2324
2c86d456
DG
2325=item Invalid version format (%s)
2326
2327(F) A version number did not meet the "lax" criteria for versions.
2328A "lax" version number is a positive decimal number (integer or
2329decimal-fraction) without exponentiation or else a dotted-decimal
2330v-string. If the v-string has less than three components, it must have a
2331leading 'v' character. Otherwise, the leading 'v' is optional. Both
2332decimal and dotted-decimal versions may have a trailing "alpha"
2333component separated by an underscore character after a fractional or
2334dotted-decimal component. The parenthesized text indicates which
a6485a24 2335criteria were not met. See the L<version> module for more details on
2c86d456 2336allowed version formats.
46314c13 2337
798ae1b7
DG
2338=item Invalid version object
2339
2340(F) The internal structure of the version object was invalid. Perhaps
2341the internals were modified directly in some way or an arbitrary reference
2342was blessed into the "version" class.
2343
a0d0e21e
LW
2344=item ioctl is not implemented
2345
2346(F) Your machine apparently doesn't implement ioctl(), which is pretty
2347strange for a machine that supports C.
2348
c289d2f7
JH
2349=item ioctl() on unopened %s
2350
2351(W unopened) You tried ioctl() on a filehandle that was never opened.
2352Check you control flow and number of arguments.
2353
fe13d51d 2354=item IO layers (like '%s') unavailable
363c40c4
SB
2355
2356(F) Your Perl has not been configured to have PerlIO, and therefore
2357you cannot use IO layers. To have PerlIO Perl must be configured
2358with 'useperlio'.
2359
80cbd5ad
JH
2360=item IO::Socket::atmark not implemented on this architecture
2361
2362(F) Your machine doesn't implement the sockatmark() functionality,
2363neither as a system call or an ioctl call (SIOCATMARK).
2364
b4581f09
JH
2365=item $* is no longer supported
2366
d1d15184 2367(D deprecated, syntax) The special variable C<$*>, deprecated in older perls, has
4fd19576
B
2368been removed as of 5.9.0 and is no longer supported. In previous versions of perl the use of
2369C<$*> enabled or disabled multi-line matching within a string.
2370
2371Instead of using C<$*> you should use the C</m> (and maybe C</s>) regexp
2372modifiers. (In older versions: when C<$*> was set to a true value then all regular
2373expressions behaved as if they were written using C</m>.)
b4581f09 2374
8ae1fe26
RGS
2375=item $# is no longer supported
2376
d1d15184 2377(D deprecated, syntax) The special variable C<$#>, deprecated in older perls, has
8ae1fe26
RGS
2378been removed as of 5.9.3 and is no longer supported. You should use the
2379printf/sprintf functions instead.
2380
6ad11d81
JH
2381=item `%s' is not a code reference
2382
04a80ee0
RGS
2383(W overload) The second (fourth, sixth, ...) argument of overload::constant
2384needs to be a code reference. Either an anonymous subroutine, or a reference
6ad11d81
JH
2385to a subroutine.
2386
2387=item `%s' is not an overloadable type
2388
04a80ee0
RGS
2389(W overload) You tried to overload a constant type the overload package is
2390unaware of.
6ad11d81 2391
a0d0e21e
LW
2392=item junk on end of regexp
2393
2394(P) The regular expression parser is confused.
2395
2396=item Label not found for "last %s"
2397
be771a83
GS
2398(F) You named a loop to break out of, but you're not currently in a loop
2399of that name, not even if you count where you were called from. See
2400L<perlfunc/last>.
a0d0e21e
LW
2401
2402=item Label not found for "next %s"
2403
2404(F) You named a loop to continue, but you're not currently in a loop of
2405that name, not even if you count where you were called from. See
2406L<perlfunc/last>.
2407
2408=item Label not found for "redo %s"
2409
2410(F) You named a loop to restart, but you're not currently in a loop of
2411that name, not even if you count where you were called from. See
2412L<perlfunc/last>.
2413
85ab1d1d 2414=item leaving effective %s failed
5ff3f7a4 2415
85ab1d1d 2416(F) While under the C<use filetest> pragma, switching the real and
5ff3f7a4
GS
2417effective uids or gids failed.
2418
49704364
WL
2419=item length/code after end of string in unpack
2420
d7f8936a 2421(F) While unpacking, the string buffer was already used up when an unpack
49704364
WL
2422length/code combination tried to obtain more data. This results in
2423an undefined value for the length. See L<perlfunc/pack>.
2424
f0e67a1d
Z
2425=item Lexing code attempted to stuff non-Latin-1 character into Latin-1 input
2426
2427(F) An extension is attempting to insert text into the current parse
2428(using L<lex_stuff_pvn_flags|perlapi/lex_stuff_pvn_flags> or similar), but
2429tried to insert a character that couldn't be part of the current input.
2430This is an inherent pitfall of the stuffing mechanism, and one of the
2431reasons to avoid it. Where it is necessary to stuff, stuffing only
2432plain ASCII is recommended.
2433
2434=item Lexing code internal error (%s)
2435
2436(F) Lexing code supplied by an extension violated the lexer's API in a
2437detectable way.
2438
69282e91 2439=item listen() on closed socket %s
a0d0e21e 2440
be771a83
GS
2441(W closed) You tried to do a listen on a closed socket. Did you forget
2442to check the return value of your socket() call? See
2443L<perlfunc/listen>.
a0d0e21e 2444
bcd05b94 2445=item localtime(%f) too large
8b56d6ff 2446
fc003d4b
MS
2447(W overflow) You called C<localtime> with an number that was larger
2448than it can reliably handle and C<localtime> probably returned the
2449wrong date. This warning is also triggered with nan (the special
2450not-a-number value).
2451
bcd05b94 2452=item localtime(%f) too small
fc003d4b
MS
2453
2454(W overflow) You called C<localtime> with an number that was smaller
2455than it can reliably handle and C<localtime> probably returned the
2456wrong date. This warning is also triggered with nan (the special
2457not-a-number value).
8b56d6ff 2458
58e23c8d 2459=item Lookbehind longer than %d not implemented in regex m/%s/
b45f050a
JF
2460
2461(F) There is currently a limit on the length of string which lookbehind can
58e23c8d 2462handle. This restriction may be eased in a future release.
2e50fd82 2463
b88df990
NC
2464=item Lost precision when %s %f by 1
2465
2466(W) The value you attempted to increment or decrement by one is too large
2467for the underlying floating point representation to store accurately,
2468hence the target of C<++> or C<--> is unchanged. Perl issues this warning
2469because it has already switched from integers to floating point when values
2470are too large for integers, and now even floating point is insufficient.
2471You may wish to switch to using L<Math::BigInt> explicitly.
2472
2f7da168
RK
2473=item lstat() on filehandle %s
2474
2475(W io) You tried to do an lstat on a filehandle. What did you mean
2476by that? lstat() makes sense only on filenames. (Perl did a fstat()
2477instead on the filehandle.)
2478
885ef6f5
GG
2479=item lvalue attribute ignored after the subroutine has been defined
2480
963d9ce9 2481(W misc) Making a subroutine an lvalue subroutine after it has been defined
d9159685
RS
2482by declaring the subroutine with an lvalue attribute is not
2483possible. To make the subroutine an lvalue subroutine add the
e2bd2e2b 2484lvalue attribute to the definition, or put the declaration before
885ef6f5
GG
2485the definition.
2486
96ebfdd7
RK
2487=item Lvalue subs returning %s not implemented yet
2488
2489(F) Due to limitations in the current implementation, array and hash
2490values cannot be returned in subroutines used in lvalue context. See
2491L<perlsub/"Lvalue subroutines">.
2492
49704364
WL
2493=item Malformed integer in [] in pack
2494
2495(F) Between the brackets enclosing a numeric repeat count only digits
2496are permitted. See L<perlfunc/pack>.
2497
2498=item Malformed integer in [] in unpack
2499
2500(F) Between the brackets enclosing a numeric repeat count only digits
2501are permitted. See L<perlfunc/pack>.
2502
6df41af2
GS
2503=item Malformed PERLLIB_PREFIX
2504
2505(F) An error peculiar to OS/2. PERLLIB_PREFIX should be of the form
2506
2507 prefix1;prefix2
2508
2509or
6df41af2
GS
2510 prefix1 prefix2
2511
be771a83
GS
2512with nonempty prefix1 and prefix2. If C<prefix1> is indeed a prefix of
2513a builtin library search path, prefix2 is substituted. The error may
2514appear if components are not found, or are too long. See
fecfaeb8 2515"PERLLIB_PREFIX" in L<perlos2>.
6df41af2 2516
2f758a16
ST
2517=item Malformed prototype for %s: %s
2518
d37a9538
ST
2519(F) You tried to use a function with a malformed prototype. The
2520syntax of function prototypes is given a brief compile-time check for
2521obvious errors like invalid characters. A more rigorous check is run
2522when the function is called.
2f758a16 2523
ba210ebe
JH
2524=item Malformed UTF-8 character (%s)
2525
2575c402
JW
2526(S utf8) (F) Perl detected a string that didn't comply with UTF-8
2527encoding rules, even though it had the UTF8 flag on.
ba210ebe 2528
2575c402
JW
2529One possible cause is that you set the UTF8 flag yourself for data that
2530you thought to be in UTF-8 but it wasn't (it was for example legacy
25318-bit data). To guard against this, you can use Encode::decode_utf8.
2532
2533If you use the C<:encoding(UTF-8)> PerlIO layer for input, invalid byte
2534sequences are handled gracefully, but if you use C<:utf8>, the flag is
2535set without validating the data, possibly resulting in this error
2536message.
2537
2538See also L<Encode/"Handling Malformed Data">.
901b21bf 2539
dea0fc0b
JH
2540=item Malformed UTF-16 surrogate
2541
183097aa 2542(F) Perl thought it was reading UTF-16 encoded character data but while
dea0fc0b
JH
2543doing it Perl met a malformed Unicode surrogate.
2544
ff3f963a
KW
2545=item Malformed UTF-8 returned by \N
2546
2547(F) The charnames handler returned malformed UTF-8.
2548
f337b084
TH
2549=item Malformed UTF-8 string in pack
2550
2551(F) You tried to pack something that didn't comply with UTF-8 encoding
2552rules and perl was unable to guess how to make more progress.
2553
2554=item Malformed UTF-8 string in unpack
2555
2556(F) You tried to unpack something that didn't comply with UTF-8 encoding
2557rules and perl was unable to guess how to make more progress.
2558
2559=item Malformed UTF-8 string in '%c' format in unpack
2560
2561(F) You tried to unpack something that didn't comply with UTF-8 encoding
2562rules and perl was unable to guess how to make more progress.
2563
de42a5a9 2564=item Maximal count of pending signals (%u) exceeded
2563cec5 2565
fe13d51d 2566(F) Perl aborted due to a too high number of signals pending. This
2563cec5
IZ
2567usually indicates that your operating system tried to deliver signals
2568too fast (with a very high priority), starving the perl process from
2569resources it would need to reach a point where it can process signals
2570safely. (See L<perlipc/"Deferred Signals (Safe Signals)">.)
2571
49704364 2572=item %s matches null string many times in regex; marked by <-- HERE in m/%s/
6df41af2
GS
2573
2574(W regexp) The pattern you've specified would be an infinite loop if the
7253e4e3
RK
2575regular expression engine didn't specifically check for that. The <-- HERE
2576shows in the regular expression about where the problem was discovered.
2577See L<perlre>.
6df41af2 2578
25f58aea
PN
2579=item "%s" may clash with future reserved word
2580
2581(W) This warning may be due to running a perl5 script through a perl4
2582interpreter, especially if the word that is being warned about is
2583"use" or "my".
2584
49704364 2585=item % may not be used in pack
6df41af2
GS
2586
2587(F) You can't pack a string by supplying a checksum, because the
be771a83
GS
2588checksumming process loses information, and you can't go the other way.
2589See L<perlfunc/unpack>.
6df41af2 2590
a0d0e21e
LW
2591=item Method for operation %s not found in package %s during blessing
2592
2593(F) An attempt was made to specify an entry in an overloading table that
e7ea3e70 2594doesn't resolve to a valid subroutine. See L<overload>.
a0d0e21e 2595
3cdd684c
TP
2596=item Method %s not permitted
2597
2598See Server error.
2599
a0d0e21e
LW
2600=item Might be a runaway multi-line %s string starting on line %d
2601
2602(S) An advisory indicating that the previous error may have been caused
2603by a missing delimiter on a string or pattern, because it eventually
2604ended earlier on the current line.
2605
2606=item Misplaced _ in number
2607
d4ced10d
JH
2608(W syntax) An underscore (underbar) in a numeric constant did not
2609separate two digits.
a0d0e21e 2610
7baa4690
HS
2611=item Missing argument in %s
2612
2613(W uninitialized) A printf-type format required more arguments than were
2614supplied.
2615
9e81e6a1
RGS
2616=item Missing argument to -%c
2617
2618(F) The argument to the indicated command line switch must follow
2619immediately after the switch, without intervening spaces.
2620
ff3f963a 2621=item Missing braces on \N{}
423cee85 2622
4a2d328f 2623(F) Wrong syntax of character name literal C<\N{charname}> within
c3c41406
KW
2624double-quotish context. This can also happen when there is a space (or
2625comment) between the C<\N> and the C<{> in a regex with the C</x> modifier.
2626This modifier does not change the requirement that the brace immediately follow
2627the C<\N>.
423cee85 2628
f0a2b745
KW
2629=item Missing braces on \o{}
2630
2631(F) A C<\o> must be followed immediately by a C<{> in double-quotish context.
2632
a0d0e21e
LW
2633=item Missing comma after first argument to %s function
2634
2635(F) While certain functions allow you to specify a filehandle or an
2636"indirect object" before the argument list, this ain't one of them.
2637
06eaf0bc
GS
2638=item Missing command in piped open
2639
be771a83
GS
2640(W pipe) You used the C<open(FH, "| command")> or
2641C<open(FH, "command |")> construction, but the command was missing or
2642blank.
06eaf0bc 2643
961ce445
RGS
2644=item Missing control char name in \c
2645
2646(F) A double-quoted string ended with "\c", without the required control
2647character name.
2648
6df41af2
GS
2649=item Missing name in "my sub"
2650
be771a83
GS
2651(F) The reserved syntax for lexically scoped subroutines requires that
2652they have a name with which they can be found.
6df41af2
GS
2653
2654=item Missing $ on loop variable
2655
be771a83
GS
2656(F) Apparently you've been programming in B<csh> too much. Variables
2657are always mentioned with the $ in Perl, unlike in the shells, where it
2658can vary from one line to the next.
6df41af2 2659
cc507455 2660=item (Missing operator before %s?)
748a9306 2661
56da5a46
RGS
2662(S syntax) This is an educated guess made in conjunction with the message
2663"%s found where operator expected". Often the missing operator is a comma.
748a9306 2664
ab13f0c7
JH
2665=item Missing right brace on %s
2666
ff3f963a
KW
2667(F) Missing right brace in C<\x{...}>, C<\p{...}>, C<\P{...}>, or C<\N{...}>.
2668
4a68bf9d 2669=item Missing right brace on \N{} or unescaped left brace after \N
ff3f963a 2670
0a96133f
KW
2671(F)
2672C<\N> has two meanings.
2673
2674The traditional one has it followed by a name enclosed
2675in braces, meaning the character (or sequence of characters) given by that name.
ff3f963a 2676Thus C<\N{ASTERISK}> is another way of writing C<*>, valid in both
0a96133f
KW
2677double-quoted strings and regular expression patterns. In patterns, it doesn't
2678have the meaning an unescaped C<*> does.
ff3f963a 2679
0a96133f 2680Starting in Perl 5.12.0, C<\N> also can have an additional meaning (only) in
c3c41406
KW
2681patterns, namely to match a non-newline character. (This is short for
2682C<[^\n]>, and like C<.> but is not affected by the C</s> regex modifier.)
ff3f963a
KW
2683
2684This can lead to some ambiguities. When C<\N> is not followed immediately by a
c3c41406 2685left brace, Perl assumes the C<[^\n]> meaning. Also, if
ff3f963a
KW
2686the braces form a valid quantifier such as C<\N{3}> or C<\N{5,}>, Perl assumes
2687that this means to match the given quantity of non-newlines (in these examples,
0a96133f 26883; and 5 or more, respectively). In all other case, where there is a C<\N{>
ff3f963a
KW
2689and a matching C<}>, Perl assumes that a character name is desired.
2690
2691However, if there is no matching C<}>, Perl doesn't know if it was mistakenly
c3c41406 2692omitted, or if C<[^\n]{> was desired, and
0a96133f
KW
2693raises this error. If you meant the former, add the right brace; if you meant
2694the latter, escape the brace with a backslash, like so: C<\N\{>
ab13f0c7 2695
d98d5fff 2696=item Missing right curly or square bracket
a0d0e21e 2697
be771a83
GS
2698(F) The lexer counted more opening curly or square brackets than closing
2699ones. As a general rule, you'll find it's missing near the place you
2700were last editing.
a0d0e21e 2701
6df41af2
GS
2702=item (Missing semicolon on previous line?)
2703
56da5a46
RGS
2704(S syntax) This is an educated guess made in conjunction with the message
2705"%s found where operator expected". Don't automatically put a semicolon on
6df41af2
GS
2706the previous line just because you saw this message.
2707
a0d0e21e
LW
2708=item Modification of a read-only value attempted
2709
2710(F) You tried, directly or indirectly, to change the value of a
5f05dabc 2711constant. You didn't, of course, try "2 = 1", because the compiler
a0d0e21e
LW
2712catches that. But an easy way to do the same thing is:
2713
2714 sub mod { $_[0] = 1 }
2715 mod(2);
2716
2717Another way is to assign to a substr() that's off the end of the string.
2718
c5674021
PDF
2719Yet another way is to assign to a C<foreach> loop I<VAR> when I<VAR>
2720is aliased to a constant in the look I<LIST>:
2721
2722 $x = 1;
2723 foreach my $n ($x, 2) {
2724 $n *= 2; # modifies the $x, but fails on attempt to modify the 2
64977eb6 2725 }
c5674021 2726
7a4340ed 2727=item Modification of non-creatable array value attempted, %s
a0d0e21e
LW
2728
2729(F) You tried to make an array value spring into existence, and the
2730subscript was probably negative, even counting from end of the array
2731backwards.
2732
7a4340ed 2733=item Modification of non-creatable hash value attempted, %s
a0d0e21e 2734
be771a83
GS
2735(P) You tried to make a hash value spring into existence, and it
2736couldn't be created for some peculiar reason.
a0d0e21e
LW
2737
2738=item Module name must be constant
2739
2740(F) Only a bare module name is allowed as the first argument to a "use".
2741
be98fb35 2742=item Module name required with -%c option
6df41af2 2743
be98fb35
GS
2744(F) The C<-M> or C<-m> options say that Perl should load some module, but
2745you omitted the name of the module. Consult L<perlrun> for full details
2746about C<-M> and C<-m>.
6df41af2 2747
fe13d51d 2748=item More than one argument to '%s' open
ed9aa3b7
SG
2749
2750(F) The C<open> function has been asked to open multiple files. This
2751can happen if you are trying to open a pipe to a command that takes a
2752list of arguments, but have forgotten to specify a piped open mode.
2753See L<perlfunc/open> for details.
2754
a0d0e21e
LW
2755=item msg%s not implemented
2756
2757(F) You don't have System V message IPC on your system.
2758
2759=item Multidimensional syntax %s not supported
2760
75b44862
GS
2761(W syntax) Multidimensional arrays aren't written like C<$foo[1,2,3]>.
2762They're written like C<$foo[1][2][3]>, as in C.
8b1a09fc 2763
49704364 2764=item '/' must follow a numeric type in unpack
6df41af2 2765
49704364
WL
2766(F) You had an unpack template that contained a '/', but this did not
2767follow some unpack specification producing a numeric value.
2768See L<perlfunc/pack>.
6df41af2
GS
2769
2770=item "my sub" not yet implemented
2771
be771a83
GS
2772(F) Lexically scoped subroutines are not yet implemented. Don't try
2773that yet.
6df41af2 2774
30c282f6 2775=item "%s" variable %s can't be in a package
6df41af2 2776
be771a83
GS
2777(F) Lexically scoped variables aren't in a package, so it doesn't make
2778sense to try to declare one with a package qualifier on the front. Use
2779local() if you want to localize a package variable.
09bef843 2780
4a68bf9d 2781=item \N in a character class must be a named character: \N{...}
ff3f963a 2782
c3c41406
KW
2783(F) The new (5.12) meaning of C<\N> as C<[^\n]> is not valid in a bracketed
2784character class, for the same reason that C<.> in a character class loses its
2785specialness: it matches almost everything, which is probably not what you want.
2786
4a68bf9d 2787=item \N{NAME} must be resolved by the lexer
c3c41406
KW
2788
2789(F) When compiling a regex pattern, an unresolved named character or sequence
2790was encountered. This can happen in any of several ways that bypass the lexer,
b09c05e6 2791such as using single-quotish context, or an extra backslash in double quotish:
c3c41406
KW
2792
2793 $re = '\N{SPACE}'; # Wrong!
b09c05e6 2794 $re = "\\N{SPACE}"; # Wrong!
c3c41406
KW
2795 /$re/;
2796
b09c05e6 2797Instead, use double-quotes with a single backslash:
c3c41406
KW
2798
2799 $re = "\N{SPACE}"; # ok
2800 /$re/;
2801
2802The lexer can be bypassed as well by creating the pattern from smaller
2803components:
2804
2805 $re = '\N';
2806 /${re}{SPACE}/; # Wrong!
2807
2808It's not a good idea to split a construct in the middle like this, and it
2809doesn't work here. Instead use the solution above.
2810
2811Finally, the message also can happen under the C</x> regex modifier when the
2812C<\N> is separated by spaces from the C<{>, in which case, remove the spaces.
2813
2814 /\N {SPACE}/x; # Wrong!
2815 /\N{SPACE}/x; # ok
ff3f963a 2816
8b1a09fc 2817=item Name "%s::%s" used only once: possible typo
2818
e476b1b5 2819(W once) Typographical errors often show up as unique variable names.
be771a83
GS
2820If you had a good reason for having a unique name, then just mention it
2821again somehow to suppress the message. The C<our> declaration is
77ca0c92 2822provided for this purpose.
a0d0e21e 2823
64b374f4
FD
2824NOTE: This warning detects symbols that have been used only once so $c, @c,
2825%c, *c, &c, sub c{}, c(), and c (the filehandle or format) are considered
2826the same; if a program uses $c only once but also uses any of the others it
2827will not trigger this warning.
2828
4a68bf9d 2829=item Invalid hexadecimal number in \N{U+...}
ff3f963a
KW
2830
2831(F) The character constant represented by C<...> is not a valid hexadecimal
c3c41406
KW
2832number. Either it is empty, or you tried to use a character other than 0 - 9
2833or A - F, a - f in a hexadecimal number.
ff3f963a 2834
49704364
WL
2835=item Negative '/' count in unpack
2836
2837(F) The length count obtained from a length/code unpack operation was
2838negative. See L<perlfunc/pack>.
2839
a0d0e21e
LW
2840=item Negative length
2841
be771a83
GS
2842(F) You tried to do a read/write/send/recv operation with a buffer
2843length that is less than 0. This is difficult to imagine.
a0d0e21e 2844
ed9aa3b7
SG
2845=item Negative offset to vec in lvalue context
2846
2847(F) When C<vec> is called in an lvalue context, the second argument must be
2848greater than or equal to zero.
2849
7253e4e3 2850=item Nested quantifiers in regex; marked by <-- HERE in m/%s/
a0d0e21e 2851
b45f050a 2852(F) You can't quantify a quantifier without intervening parentheses. So
7253e4e3 2853things like ** or +* or ?* are illegal. The <-- HERE shows in the regular
b45f050a 2854expression about where the problem was discovered.
a0d0e21e 2855
7253e4e3 2856Note that the minimal matching quantifiers, C<*?>, C<+?>, and
be771a83 2857C<??> appear to be nested quantifiers, but aren't. See L<perlre>.
a0d0e21e 2858
6df41af2 2859=item %s never introduced
a0d0e21e 2860
be771a83
GS
2861(S internal) The symbol in question was declared but somehow went out of
2862scope before it could possibly have been used.
a0d0e21e 2863
2c7d6b9c
RGS
2864=item next::method/next::can/maybe::next::method cannot find enclosing method
2865
2866(F) C<next::method> needs to be called within the context of a
2867real method in a real package, and it could not find such a context.
2868See L<mro>.
2869
a0d0e21e
LW
2870=item No %s allowed while running setuid
2871
be771a83
GS
2872(F) Certain operations are deemed to be too insecure for a setuid or
2873setgid script to even be allowed to attempt. Generally speaking there
2874will be another way to do what you want that is, if not secure, at least
2875securable. See L<perlsec>.
a0d0e21e 2876
a0d0e21e
LW
2877=item No comma allowed after %s
2878
2879(F) A list operator that has a filehandle or "indirect object" is not
2880allowed to have a comma between that and the following arguments.
2881Otherwise it'd be just another one of the arguments.
2882
0a753a76 2883One possible cause for this is that you expected to have imported a
2884constant to your name space with B<use> or B<import> while no such
2885importing took place, it may for example be that your operating system
2886does not support that particular constant. Hopefully you did use an
2887explicit import list for the constants you expect to see, please see
2888L<perlfunc/use> and L<perlfunc/import>. While an explicit import list
2889would probably have caught this error earlier it naturally does not
2890remedy the fact that your operating system still does not support that
2891constant. Maybe you have a typo in the constants of the symbol import
2892list of B<use> or B<import> or in the constant name at the line where
2893this error was triggered?
2894
748a9306
LW
2895=item No command into which to pipe on command line
2896
be771a83
GS
2897(F) An error peculiar to VMS. Perl handles its own command line
2898redirection, and found a '|' at the end of the command line, so it
2899doesn't know where you want to pipe the output from this command.
748a9306 2900
a0d0e21e
LW
2901=item No DB::DB routine defined
2902
be771a83 2903(F) The currently executing code was compiled with the B<-d> switch, but
ccafdc96
RGS
2904for some reason the current debugger (e.g. F<perl5db.pl> or a C<Devel::>
2905module) didn't define a routine to be called at the beginning of each
2906statement.
a0d0e21e
LW
2907
2908=item No dbm on this machine
2909
2910(P) This is counted as an internal error, because every machine should
5f05dabc 2911supply dbm nowadays, because Perl comes with SDBM. See L<SDBM_File>.
a0d0e21e 2912
ccafdc96 2913=item No DB::sub routine defined
a0d0e21e 2914
ccafdc96
RGS
2915(F) The currently executing code was compiled with the B<-d> switch, but
2916for some reason the current debugger (e.g. F<perl5db.pl> or a C<Devel::>
2917module) didn't define a C<DB::sub> routine to be called at the beginning
2918of each ordinary subroutine call.
a0d0e21e 2919
96ebfdd7
RK
2920=item No B<-e> allowed in setuid scripts
2921
2922(F) A setuid script can't be specified by the user.
2923
c47ff5f1 2924=item No error file after 2> or 2>> on command line
748a9306 2925
be771a83
GS
2926(F) An error peculiar to VMS. Perl handles its own command line
2927redirection, and found a '2>' or a '2>>' on the command line, but can't
2928find the name of the file to which to write data destined for stderr.
748a9306 2929
49704364
WL
2930=item No group ending character '%c' found in template
2931
2932(F) A pack or unpack template has an opening '(' or '[' without its
2933matching counterpart. See L<perlfunc/pack>.
2934
c47ff5f1 2935=item No input file after < on command line
748a9306 2936
be771a83
GS
2937(F) An error peculiar to VMS. Perl handles its own command line
2938redirection, and found a '<' on the command line, but can't find the
2939name of the file from which to read data for stdin.
748a9306 2940
6df41af2
GS
2941=item No #! line
2942
2943(F) The setuid emulator requires that scripts have a well-formed #! line
2944even on machines that don't support the #! construct.
2945
2c7d6b9c
RGS
2946=item No next::method '%s' found for %s
2947
2948(F) C<next::method> found no further instances of this method name
2949in the remaining packages of the MRO of this class. If you don't want
2950it throwing an exception, use C<maybe::next::method>
2951or C<next::can>. See L<mro>.
2952
6df41af2
GS
2953=item "no" not allowed in expression
2954
be771a83
GS
2955(F) The "no" keyword is recognized and executed at compile time, and
2956returns no useful value. See L<perlmod>.
6df41af2 2957
c47ff5f1 2958=item No output file after > on command line
748a9306 2959
be771a83
GS
2960(F) An error peculiar to VMS. Perl handles its own command line
2961redirection, and found a lone '>' at the end of the command line, so it
2962doesn't know where you wanted to redirect stdout.
748a9306 2963
c47ff5f1 2964=item No output file after > or >> on command line
748a9306 2965
be771a83
GS
2966(F) An error peculiar to VMS. Perl handles its own command line
2967redirection, and found a '>' or a '>>' on the command line, but can't
2968find the name of the file to which to write data destined for stdout.
748a9306 2969
1ec3e8de
GS
2970=item No package name allowed for variable %s in "our"
2971
be771a83
GS
2972(F) Fully qualified variable names are not allowed in "our"
2973declarations, because that doesn't make much sense under existing
2974semantics. Such syntax is reserved for future extensions.
1ec3e8de 2975
a0d0e21e
LW
2976=item No Perl script found in input
2977
2978(F) You called C<perl -x>, but no line was found in the file beginning
2979with #! and containing the word "perl".
2980
2981=item No setregid available
2982
2983(F) Configure didn't find anything resembling the setregid() call for
2984your system.
2985
2986=item No setreuid available
2987
2988(F) Configure didn't find anything resembling the setreuid() call for
2989your system.
2990
6df41af2
GS
2991=item No %s specified for -%c
2992
2993(F) The indicated command line switch needs a mandatory argument, but
2994you haven't specified one.
e75d1f10
RD
2995=item No such class field "%s" in variable %s of type %s
2996
2997(F) You tried to access a key from a hash through the indicated typed variable
2998but that key is not allowed by the package of the same type. The indicated
2999package has restricted the set of allowed keys using the L<fields> pragma.
3000
2c692339
RGS
3001=item No such class %s
3002
30c282f6 3003(F) You provided a class qualifier in a "my", "our" or "state" declaration, but
2c692339
RGS
3004this class doesn't exist at this point in your program.
3005
3c20a832
SP
3006=item No such hook: %s
3007
3008(F) You specified a signal hook that was not recognized by Perl. Currently, Perl
3009accepts C<__DIE__> and C<__WARN__> as valid signal hooks
3010
6df41af2
GS
3011=item No such pipe open
3012
3013(P) An error peculiar to VMS. The internal routine my_pclose() tried to
be771a83
GS
3014close a pipe which hadn't been opened. This should have been caught
3015earlier as an attempt to close an unopened filehandle.
6df41af2 3016
a0d0e21e
LW
3017=item No such signal: SIG%s
3018
be771a83
GS
3019(W signal) You specified a signal name as a subscript to %SIG that was
3020not recognized. Say C<kill -l> in your shell to see the valid signal
3021names on your system.
a0d0e21e
LW
3022
3023=item Not a CODE reference
3024
3025(F) Perl was trying to evaluate a reference to a code value (that is, a
3026subroutine), but found a reference to something else instead. You can
be771a83
GS
3027use the ref() function to find out what kind of ref it really was. See
3028also L<perlref>.
a0d0e21e
LW
3029
3030=item Not a format reference
3031
3032(F) I'm not sure how you managed to generate a reference to an anonymous
3033format, but this indicates you did, and that it didn't exist.
3034
3035=item Not a GLOB reference
3036
be771a83
GS
3037(F) Perl was trying to evaluate a reference to a "typeglob" (that is, a
3038symbol table entry that looks like C<*foo>), but found a reference to
3039something else instead. You can use the ref() function to find out what
3040kind of ref it really was. See L<perlref>.
a0d0e21e
LW
3041
3042=item Not a HASH reference
3043
be771a83
GS
3044(F) Perl was trying to evaluate a reference to a hash value, but found a
3045reference to something else instead. You can use the ref() function to
3046find out what kind of ref it really was. See L<perlref>.
a0d0e21e 3047
6df41af2
GS
3048=item Not an ARRAY reference
3049
be771a83
GS
3050(F) Perl was trying to evaluate a reference to an array value, but found
3051a reference to something else instead. You can use the ref() function
3052to find out what kind of ref it really was. See L<perlref>.
6df41af2 3053
a0d0e21e
LW
3054=item Not a perl script
3055
3056(F) The setuid emulator requires that scripts have a well-formed #! line
3057even on machines that don't support the #! construct. The line must
3058mention perl.
3059
3060=item Not a SCALAR reference
3061
be771a83
GS
3062(F) Perl was trying to evaluate a reference to a scalar value, but found
3063a reference to something else instead. You can use the ref() function
3064to find out what kind of ref it really was. See L<perlref>.
a0d0e21e
LW
3065
3066=item Not a subroutine reference
3067
3068(F) Perl was trying to evaluate a reference to a code value (that is, a
3069subroutine), but found a reference to something else instead. You can
be771a83
GS
3070use the ref() function to find out what kind of ref it really was. See
3071also L<perlref>.
a0d0e21e 3072
e7ea3e70 3073=item Not a subroutine reference in overload table
a0d0e21e
LW
3074
3075(F) An attempt was made to specify an entry in an overloading table that
8b1a09fc 3076doesn't somehow point to a valid subroutine. See L<overload>.
a0d0e21e 3077
a0d0e21e
LW
3078=item Not enough arguments for %s
3079
3080(F) The function requires more arguments than you specified.
3081
6df41af2
GS
3082=item Not enough format arguments
3083
be771a83
GS
3084(W syntax) A format specified more picture fields than the next line
3085supplied. See L<perlform>.
6df41af2
GS
3086
3087=item %s: not found
3088
be771a83
GS
3089(A) You've accidentally run your script through the Bourne shell instead
3090of Perl. Check the #! line, or manually feed your script into Perl
3091yourself.
6df41af2
GS
3092
3093=item no UTC offset information; assuming local time is UTC
a0d0e21e 3094
6df41af2
GS
3095(S) A warning peculiar to VMS. Perl was unable to find the local
3096timezone offset, so it's assuming that local system time is equivalent
be771a83
GS
3097to UTC. If it's not, define the logical name
3098F<SYS$TIMEZONE_DIFFERENTIAL> to translate to the number of seconds which
3099need to be added to UTC to get local time.
a0d0e21e 3100
f0a2b745
KW
3101=item Non-octal character '%c'. Resolved as "%s"
3102
3103(W digit) In parsing an octal numeric constant, a character was unexpectedly
3104encountered that isn't octal. The resulting value is as indicated.
3105
4ef2275c
GA
3106=item Non-string passed as bitmask
3107
3108(W misc) A number has been passed as a bitmask argument to select().
3109Use the vec() function to construct the file descriptor bitmasks for
3110select. See L<perlfunc/select>
3111
a0d0e21e
LW
3112=item Null filename used
3113
be771a83
GS
3114(F) You can't require the null filename, especially because on many
3115machines that means the current directory! See L<perlfunc/require>.
a0d0e21e 3116
6df41af2
GS
3117=item NULL OP IN RUN
3118
be771a83
GS
3119(P debugging) Some internal routine called run() with a null opcode
3120pointer.
6df41af2 3121
55497cff 3122=item Null picture in formline
3123
3124(F) The first argument to formline must be a valid format picture
3125specification. It was found to be empty, which probably means you
3126supplied it an uninitialized value. See L<perlform>.
3127
a0d0e21e
LW
3128=item Null realloc
3129
3130(P) An attempt was made to realloc NULL.
3131
3132=item NULL regexp argument
3133
5f05dabc 3134(P) The internal pattern matching routines blew it big time.
a0d0e21e
LW
3135
3136=item NULL regexp parameter
3137
3138(P) The internal pattern matching routines are out of their gourd.
3139
fc36a67e 3140=item Number too long
3141
be771a83 3142(F) Perl limits the representation of decimal numbers in programs to
da75cd15 3143about 250 characters. You've exceeded that length. Future
be771a83
GS
3144versions of Perl are likely to eliminate this arbitrary limitation. In
3145the meantime, try using scientific notation (e.g. "1e6" instead of
3146"1_000_000").
fc36a67e 3147
f0a2b745
KW
3148=item Number with no digits
3149
3150(F) Perl was looking for a number but found nothing that looked like a number.
3151This happens, for example with C<\o{}>, with no number between the braces.
3152
6df41af2
GS
3153=item Octal number in vector unsupported
3154
be771a83
GS
3155(F) Numbers with a leading C<0> are not currently allowed in vectors.
3156The octal number interpretation of such numbers may be supported in a
3157future version.
6df41af2 3158
252aa082
JH
3159=item Octal number > 037777777777 non-portable
3160
75b44862 3161(W portable) The octal number you specified is larger than 2**32-1
be771a83
GS
3162(4294967295) and therefore non-portable between systems. See
3163L<perlport> for more on portability concerns.
252aa082
JH
3164
3165See also L<perlport> for writing portable code.
3166
6ad11d81
JH
3167=item Odd number of arguments for overload::constant
3168
04a80ee0
RGS
3169(W overload) The call to overload::constant contained an odd number of
3170arguments. The arguments should come in pairs.
6ad11d81 3171
b21befc1
MG
3172=item Odd number of elements in anonymous hash
3173
3174(W misc) You specified an odd number of elements to initialize a hash,
3175which is odd, because hashes come in key/value pairs.
3176
1930e939 3177=item Odd number of elements in hash assignment
a0d0e21e 3178
be771a83
GS
3179(W misc) You specified an odd number of elements to initialize a hash,
3180which is odd, because hashes come in key/value pairs.
a0d0e21e 3181
bbce6d69 3182=item Offset outside string
3183
a4a4c9e2 3184(F|W layer) You tried to do a read/write/send/recv/seek operation
42bc49da 3185with an offset pointing outside the buffer. This is difficult to
f5a7294f
JH
3186imagine. The sole exceptions to this are that zero padding will
3187take place when going past the end of the string when either
3188C<sysread()>ing a file, or when seeking past the end of a scalar opened
1a7a2554
MB
3189for I/O (in anticipation of future reads and to imitate the behaviour
3190with real files).
bbce6d69 3191
c289d2f7 3192=item %s() on unopened %s
2dd78f96
JH
3193
3194(W unopened) An I/O operation was attempted on a filehandle that was
3195never initialized. You need to do an open(), a sysopen(), or a socket()
3196call, or call a constructor from the FileHandle package.
3197
96ebfdd7
RK
3198=item -%s on unopened filehandle %s
3199
3200(W unopened) You tried to invoke a file test operator on a filehandle
3201that isn't open. Check your control flow. See also L<perlfunc/-X>.
3202
a0d0e21e
LW
3203=item oops: oopsAV
3204
e476b1b5 3205(S internal) An internal warning that the grammar is screwed up.
a0d0e21e
LW
3206
3207=item oops: oopsHV
3208
e476b1b5 3209(S internal) An internal warning that the grammar is screwed up.
a0d0e21e 3210
abc718f2
RGS
3211=item Opening dirhandle %s also as a file
3212
a4a4c9e2 3213(W io, deprecated) You used open() to associate a filehandle to
abc718f2
RGS
3214a symbol (glob or scalar) that already holds a dirhandle.
3215Although legal, this idiom might render your code confusing
3216and is deprecated.
3217
3218=item Opening filehandle %s also as a directory
3219
a4a4c9e2 3220(W io, deprecated) You used opendir() to associate a dirhandle to
abc718f2
RGS
3221a symbol (glob or scalar) that already holds a filehandle.
3222Although legal, this idiom might render your code confusing
3223and is deprecated.
3224
a0288114 3225=item Operation "%s": no method found, %s
44a8e56a 3226
be771a83
GS
3227(F) An attempt was made to perform an overloaded operation for which no
3228handler was defined. While some handlers can be autogenerated in terms
3229of other handlers, there is no default handler for any operation, unless
3230C<fallback> overloading key is specified to be true. See L<overload>.
44a8e56a 3231
9ae3ac1a
KW
3232=item Operation "%s" returns its argument for UTF-16 surrogate U+%X
3233
3234(W) You performed an operation requiring Unicode semantics on a Unicode
3235surrogate. Unicode frowns upon the use of surrogates for anything but
3236storing strings in UTF-16, but semantics are (reluctantly) defined for
3237the surrogates, and they are to do nothing for this operation. Because
3238the use of surrogates can be dangerous, Perl warns.
3239
3240If the operation shown is "ToFold", it means that case-insensitive
3241matching in a regular expression was done on the code point.
3242
3243If you know what you are doing you can turn off this warning by
3244C<no warnings 'utf8';>.
3245
3246=item Operation "%s" returns its argument for non-Unicode code point 0x%X
3247
3248(W) You performed an operation requiring Unicode semantics on a code
3249point that is not in Unicode, so what it should do is not defined. Perl
3250has chosen to have it do nothing, and warn you.
3251
3252If the operation shown is "ToFold", it means that case-insensitive
3253matching in a regular expression was done on the code point.
3254
3255If you know what you are doing you can turn off this warning by
3256C<no warnings 'utf8';>.
3257
748a9306
LW
3258=item Operator or semicolon missing before %s
3259
be771a83
GS
3260(S ambiguous) You used a variable or subroutine call where the parser
3261was expecting an operator. The parser has assumed you really meant to
3262use an operator, but this is highly likely to be incorrect. For
3263example, if you say "*foo *foo" it will be interpreted as if you said
3264"*foo * 'foo'".
748a9306 3265
6df41af2
GS
3266=item "our" variable %s redeclared
3267
be771a83
GS
3268(W misc) You seem to have already declared the same global once before
3269in the current lexical scope.
6df41af2 3270
a80b8354
GS
3271=item Out of memory!
3272
3273(X) The malloc() function returned 0, indicating there was insufficient
be771a83
GS
3274remaining memory (or virtual memory) to satisfy the request. Perl has
3275no option but to exit immediately.
a80b8354 3276
19a52907
JH
3277At least in Unix you may be able to get past this by increasing your
3278process datasize limits: in csh/tcsh use C<limit> and
3279C<limit datasize n> (where C<n> is the number of kilobytes) to check
3280the current limits and change them, and in ksh/bash/zsh use C<ulimit -a>
3281and C<ulimit -d n>, respectively.
3282
6d3b25aa
RGS
3283=item Out of memory during %s extend
3284
3285(X) An attempt was made to extend an array, a list, or a string beyond
3286the largest possible memory allocation.
3287
6df41af2 3288=item Out of memory during "large" request for %s
a0d0e21e 3289
6df41af2
GS
3290(F) The malloc() function returned 0, indicating there was insufficient
3291remaining memory (or virtual memory) to satisfy the request. However,
be771a83
GS
3292the request was judged large enough (compile-time default is 64K), so a
3293possibility to shut down by trapping this error is granted.
a0d0e21e 3294
1b979e0a 3295=item Out of memory during request for %s
a0d0e21e 3296
be771a83
GS
3297(X|F) The malloc() function returned 0, indicating there was
3298insufficient remaining memory (or virtual memory) to satisfy the
3299request.
eff9c6e2
CS
3300
3301The request was judged to be small, so the possibility to trap it
3302depends on the way perl was compiled. By default it is not trappable.
be771a83
GS
3303However, if compiled for this, Perl may use the contents of C<$^M> as an
3304emergency pool after die()ing with this message. In this case the error
b022d2d2
IZ
3305is trappable I<once>, and the error message will include the line and file
3306where the failed request happened.
55497cff 3307
1b979e0a
IZ
3308=item Out of memory during ridiculously large request
3309
3310(F) You can't allocate more than 2^31+"small amount" bytes. This error
be771a83
GS
3311is most likely to be caused by a typo in the Perl program. e.g.,
3312C<$arr[time]> instead of C<$arr[$time]>.
1b979e0a 3313
6df41af2
GS
3314=item Out of memory for yacc stack
3315
be771a83
GS
3316(F) The yacc parser wanted to grow its stack so it could continue
3317parsing, but realloc() wouldn't give it more memory, virtual or
3318otherwise.
6df41af2 3319
28be1210
TH
3320=item '.' outside of string in pack
3321
3322(F) The argument to a '.' in your template tried to move the working
3323position to before the start of the packed string being built.
3324
49704364 3325=item '@' outside of string in unpack
6df41af2 3326
49704364 3327(F) You had a template that specified an absolute position outside
6df41af2
GS
3328the string being unpacked. See L<perlfunc/pack>.
3329
f337b084
TH
3330=item '@' outside of string with malformed UTF-8 in unpack
3331
3332(F) You had a template that specified an absolute position outside
3333the string being unpacked. The string being unpacked was also invalid
3334UTF-8. See L<perlfunc/pack>.
3335
7cb0cfe6
BM
3336=item Overloaded dereference did not return a reference
3337
3338(F) An object with an overloaded dereference operator was dereferenced,
3339but the overloaded operation did not return a reference. See
3340L<overload>.
3341
3342=item Overloaded qr did not return a REGEXP
3343
3344(F) An object with a C<qr> overload was used as part of a match, but the
3345overloaded operation didn't return a compiled regexp. See L<overload>.
3346
6df41af2
GS
3347=item %s package attribute may clash with future reserved word: %s
3348
be771a83
GS
3349(W reserved) A lowercase attribute name was used that had a
3350package-specific handler. That name might have a meaning to Perl itself
3351some day, even though it doesn't yet. Perhaps you should use a
3352mixed-case attribute name, instead. See L<attributes>.
6df41af2 3353
fb2e24cd
KW
3354=item \p{} uses Unicode rules, not locale rules
3355
3356(W) You compiled a regular expression that contained a Unicode property
3357match (C<\p> or C<\P>), but the regular expression is also being told to
f7f5e97b
KW
3358use the run-time locale, not Unicode. Instead, use a POSIX character
3359class, which should know about the locale's rules.
3360(See L<perlrecharclass/POSIX Character Classes>.)
3361
3362Even if the run-time locale is ISO 8859-1 (Latin1), which is a subset of
3363Unicode, some properties will give results that are not valid for that
3364subset.
3365
3366Here are a couple of examples to help you see what's going on. If the
3367locale is ISO 8859-7, the character at code point 0xD7 is the "GREEK
3368CAPITAL LETTER CHI". But in Unicode that code point means the
3369"MULTIPLICATION SIGN" instead, and C<\p> always uses the Unicode
3370meaning. That means that C<\p{Alpha}> won't match, but C<[[:alpha:]]>
3371should. Only in the Latin1 locale are all the characters in the same
3372positions as they are in Unicode. But, even here, some properties give
3373incorrect results. An example is C<\p{Changes_When_Uppercased}> which
3374is true for "LATIN SMALL LETTER Y WITH DIAERESIS", but since the upper
3375case of that character is not in Latin1, in that locale it doesn't
3376change when upper cased.
fb2e24cd 3377
96ebfdd7
RK
3378=item pack/unpack repeat count overflow
3379
3380(F) You can't specify a repeat count so large that it overflows your
3381signed integers. See L<perlfunc/pack>.
3382
a0d0e21e
LW
3383=item page overflow
3384
be771a83
GS
3385(W io) A single call to write() produced more lines than can fit on a
3386page. See L<perlform>.
a0d0e21e 3387
6df41af2
GS
3388=item panic: %s
3389
3390(P) An internal error.
3391
c99a1475
NC
3392=item panic: attempt to call %s in %s