xref: /openbsd-src/gnu/usr.bin/perl/pod/perldiag.pod (revision 3d61058aa5c692477b6d18acfbbdb653a9930ff9)
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).
11    (D) A deprecation (enabled by default).
12    (S) A severe warning (enabled by default).
13    (F) A fatal error (trappable).
14    (P) An internal error you should never see (trappable).
15    (X) A very fatal error (nontrappable).
16    (A) An alien error message (not generated by Perl).
17
18The majority of messages from the first three classifications above
19(W, D & S) can be controlled using the C<warnings> pragma.
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.  E.g. C<(W closed)> means a warning in the C<closed> category.
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
30Severe warnings are always enabled, unless they are explicitly disabled
31with the C<warnings> pragma or the B<-X> switch.
32
33Trappable errors may be trapped using the eval operator.  See
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>.
37
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.
44
45=over 4
46
47=item accept() on closed socket %s
48
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>.
52
53=item ADJUST is experimental
54
55(S experimental::class) This warning is emitted if you use the C<ADJUST>
56keyword of C<use feature 'class'>.  This keyword is currently
57experimental and its behaviour may change in future releases of Perl.
58
59=item Aliasing via reference is experimental
60
61(S experimental::refaliasing) This warning is emitted if you use
62a reference constructor on the left-hand side of an assignment to
63alias one variable to another.  Simply suppress the warning if you
64want to use the feature, but know that in doing so you are taking
65the risk of using an experimental feature which may change or be
66removed in a future Perl version:
67
68    no warnings "experimental::refaliasing";
69    use feature "refaliasing";
70    \$x = \$y;
71
72=item '%c' allowed only after types %s in %s
73
74(F) The modifiers '!', '<' and '>' are allowed in pack() or unpack() only
75after certain types.  See L<perlfunc/pack>.
76
77=item alpha->numify() is lossy
78
79(W numeric) An alpha version can not be numified without losing
80information.
81
82=item Ambiguous call resolved as CORE::%s(), qualify as such or use &
83
84(W ambiguous) A subroutine you have declared has the same name as a Perl
85keyword, and you have used the name without qualification for calling
86one or the other.  Perl decided to call the builtin because the
87subroutine is not imported.
88
89To force interpretation as a subroutine call, either put an ampersand
90before the subroutine name, or qualify the name with its package.
91Alternatively, you can import the subroutine (or pretend that it's
92imported with the C<use subs> pragma).
93
94To silently interpret it as the Perl operator, use the C<CORE::> prefix
95on the operator (e.g. C<CORE::log($x)>) or declare the subroutine
96to be an object method (see L<perlsub/"Subroutine Attributes"> or
97L<attributes>).
98
99=item Ambiguous range in transliteration operator
100
101(F) You wrote something like C<tr/a-z-0//> which doesn't mean anything at
102all.  To include a C<-> character in a transliteration, put it either
103first or last.  (In the past, C<tr/a-z-0//> was synonymous with
104C<tr/a-y//>, which was probably not what you would have expected.)
105
106=item Ambiguous use of %s resolved as %s
107
108(S ambiguous) You said something that may not be interpreted the way
109you thought.  Normally it's pretty easy to disambiguate it by supplying
110a missing quote, operator, parenthesis pair or declaration.
111
112=item Ambiguous use of -%s resolved as -&%s()
113
114(S ambiguous) You wrote something like C<-foo>, which might be the
115string C<"-foo">, or a call to the function C<foo>, negated.  If you meant
116the string, just write C<"-foo">.  If you meant the function call,
117write C<-foo()>.
118
119=item Ambiguous use of %c resolved as operator %c
120
121(S ambiguous) C<%>, C<&>, and C<*> are both infix operators (modulus,
122bitwise and, and multiplication) I<and> initial special characters
123(denoting hashes, subroutines and typeglobs), and you said something
124like C<*foo * foo> that might be interpreted as either of them.  We
125assumed you meant the infix operator, but please try to make it more
126clear -- in the example given, you might write C<*foo * foo()> if you
127really meant to multiply a glob by the result of calling a function.
128
129=item Ambiguous use of %c{%s} resolved to %c%s
130
131(W ambiguous) You wrote something like C<@{foo}>, which might be
132asking for the variable C<@foo>, or it might be calling a function
133named foo, and dereferencing it as an array reference.  If you wanted
134the variable, you can just write C<@foo>.  If you wanted to call the
135function, write C<@{foo()}> ... or you could just not have a variable
136and a function with the same name, and save yourself a lot of trouble.
137
138=item Ambiguous use of %c{%s[...]} resolved to %c%s[...]
139
140=item Ambiguous use of %c{%s{...}} resolved to %c%s{...}
141
142(W ambiguous) You wrote something like C<${foo[2]}> (where foo represents
143the name of a Perl keyword), which might be looking for element number
1442 of the array named C<@foo>, in which case please write C<$foo[2]>, or you
145might have meant to pass an anonymous arrayref to the function named
146foo, and then do a scalar deref on the value it returns.  If you meant
147that, write C<${foo([2])}>.
148
149In regular expressions, the C<${foo[2]}> syntax is sometimes necessary
150to disambiguate between array subscripts and character classes.
151C</$length[2345]/>, for instance, will be interpreted as C<$length> followed
152by the character class C<[2345]>.  If an array subscript is what you
153want, you can avoid the warning by changing C</${length[2345]}/> to the
154unsightly C</${\$length[2345]}/>, by renaming your array to something
155that does not coincide with a built-in keyword, or by simply turning
156off warnings with C<no warnings 'ambiguous';>.
157
158=item '|' and '<' may not both be specified on command line
159
160(F) An error peculiar to VMS.  Perl does its own command line
161redirection, and found that STDIN was a pipe, and that you also tried to
162redirect STDIN using '<'.  Only one STDIN stream to a customer, please.
163
164=item '|' and '>' may not both be specified on command line
165
166(F) An error peculiar to VMS.  Perl does its own command line
167redirection, and thinks you tried to redirect stdout both to a file and
168into a pipe to another command.  You need to choose one or the other,
169though nothing's stopping you from piping into a program or Perl script
170which 'splits' output into two streams, such as
171
172    open(OUT,">$ARGV[0]") or die "Can't write to $ARGV[0]: $!";
173    while (<STDIN>) {
174        print;
175        print OUT;
176    }
177    close OUT;
178
179=item Applying %s to %s will act on scalar(%s)
180
181(W misc) The pattern match (C<//>), substitution (C<s///>), and
182transliteration (C<tr///>) operators work on scalar values.  If you apply
183one of them to an array or a hash, it will convert the array or hash to
184a scalar value (the length of an array, or the population info of a
185hash) and then work on that scalar value.  This is probably not what
186you meant to do.  See L<perlfunc/grep> and L<perlfunc/map> for
187alternatives.
188
189=item Arg too short for msgsnd
190
191(F) msgsnd() requires a string at least as long as sizeof(long).
192
193=item Argument "%s" isn't numeric%s
194
195(W numeric) The indicated string was fed as an argument to an operator
196that expected a numeric value instead.  If you're fortunate the message
197will identify which operator was so unfortunate.
198
199Note that for the C<Inf> and C<NaN> (infinity and not-a-number) the
200definition of "numeric" is somewhat unusual: the strings themselves
201(like "Inf") are considered numeric, and anything following them is
202considered non-numeric.
203
204=item Argument list not closed for PerlIO layer "%s"
205
206(W layer) When pushing a layer with arguments onto the Perl I/O
207system you forgot the ) that closes the argument list.  (Layers
208take care of transforming data between external and internal
209representations.)  Perl stopped parsing the layer list at this
210point and did not attempt to push this layer.  If your program
211didn't explicitly request the failing operation, it may be the
212result of the value of the environment variable PERLIO.
213
214=item Argument "%s" treated as 0 in increment (++)
215
216(W numeric) The indicated string was fed as an argument to the C<++>
217operator which expects either a number or a string matching
218C</^[a-zA-Z]*[0-9]*\z/>.  See L<perlop/Auto-increment and
219Auto-decrement> for details.
220
221=item Array passed to stat will be coerced to a scalar%s
222
223(W syntax) You called stat() on an array, but the array will be
224coerced to a scalar - the number of elements in the array.
225
226=item A signature parameter must start with '$', '@' or '%'
227
228(F) Each subroutine signature parameter declaration must start with a valid
229sigil; for example:
230
231    sub foo ($x, $, $y = 1, @z) {}
232
233=item A slurpy parameter may not have a default value
234
235(F) Only scalar subroutine signature parameters may have a default value;
236for example:
237
238    sub foo ($x = 1)        {} # legal
239    sub foo (@x = (1))      {} # invalid
240    sub foo (%x = (a => b)) {} # invalid
241
242=item assertion botched: %s
243
244(X) The malloc package that comes with Perl had an internal failure.
245
246=item Assertion %s failed: file "%s", line %d
247
248(X) A general assertion failed.  The file in question must be examined.
249
250=item Assigned value is not a reference
251
252(F) You tried to assign something that was not a reference to an lvalue
253reference (e.g., C<\$x = $y>).  If you meant to make $x an alias to $y, use
254C<\$x = \$y>.
255
256=item Assigned value is not %s reference
257
258(F) You tried to assign a reference to a reference constructor, but the
259two references were not of the same type.  You cannot alias a scalar to
260an array, or an array to a hash; the two types must match.
261
262    \$x = \@y;  # error
263    \@x = \%y;  # error
264     $y = [];
265    \$x = $y;   # error; did you mean \$y?
266
267=item Assigning non-zero to $[ is no longer possible
268
269(F) When the "array_base" feature is disabled
270(e.g., and under C<use v5.16;>, and as of Perl 5.30)
271the special variable C<$[>, which is deprecated, is now a fixed zero value.
272
273=item Assignment to both a list and a scalar
274
275(F) If you assign to a conditional operator, the 2nd and 3rd arguments
276must either both be scalars or both be lists.  Otherwise Perl won't
277know which context to supply to the right side.
278
279=item Assuming NOT a POSIX class since %s in regex; marked by S<<-- HERE> in m/%s/
280
281(W regexp) You had something like these:
282
283 [[:alnum]]
284 [[:digit:xyz]
285
286They look like they might have been meant to be the POSIX classes
287C<[:alnum:]> or C<[:digit:]>.  If so, they should be written:
288
289 [[:alnum:]]
290 [[:digit:]xyz]
291
292Since these aren't legal POSIX class specifications, but are legal
293bracketed character classes, Perl treats them as the latter.  In the
294first example, it matches the characters C<":">, C<"[">, C<"a">, C<"l">,
295C<"m">, C<"n">, and C<"u">.
296
297If these weren't meant to be POSIX classes, this warning message is
298spurious, and can be suppressed by reordering things, such as
299
300 [[al:num]]
301
302or
303
304 [[:munla]]
305
306=item <> at require-statement should be quotes
307
308(F) You wrote C<< require <file> >> when you should have written
309C<require 'file'>.
310
311=item Attempt to access disallowed key '%s' in a restricted hash
312
313(F) The failing code has attempted to get or set a key which is not in
314the current set of allowed keys of a restricted hash.
315
316=item Attempt to bless into a freed package
317
318(F) You wrote C<bless $foo> with one argument after somehow causing
319the current package to be freed.  Perl cannot figure out what to
320do, so it throws up its hands in despair.
321
322=item Attempt to bless into a class
323
324(F) You are attempting to call C<bless> with a package name that is a
325new-style C<class>.  This is not necessary, as instances created by the
326constructor are already in the correct class.  Instances cannot be created
327by other means, such as C<bless>.
328
329=item Attempt to bless into a reference
330
331(F) The CLASSNAME argument to the bless() operator is expected to be
332the name of the package to bless the resulting object into.  You've
333supplied instead a reference to something: perhaps you wrote
334
335    bless $self, $proto;
336
337when you intended
338
339    bless $self, ref($proto) || $proto;
340
341If you actually want to bless into the stringified version
342of the reference supplied, you need to stringify it yourself, for
343example by:
344
345    bless $self, "$proto";
346
347=item Attempt to clear deleted array
348
349(S debugging) An array was assigned to when it was being freed.
350Freed values are not supposed to be visible to Perl code.  This
351can also happen if XS code calls C<av_clear> from a custom magic
352callback on the array.
353
354=item Attempt to delete disallowed key '%s' from a restricted hash
355
356(F) The failing code attempted to delete from a restricted hash a key
357which is not in its key set.
358
359=item Attempt to delete readonly key '%s' from a restricted hash
360
361(F) The failing code attempted to delete a key whose value has been
362declared readonly from a restricted hash.
363
364=item Attempt to free non-arena SV: 0x%x
365
366(S internal) All SV objects are supposed to be allocated from arenas
367that will be garbage collected on exit.  An SV was discovered to be
368outside any of those arenas.
369
370=item Attempt to free nonexistent shared string '%s'%s
371
372(S internal) Perl maintains a reference-counted internal table of
373strings to optimize the storage and access of hash keys and other
374strings.  This indicates someone tried to decrement the reference count
375of a string that can no longer be found in the table.
376
377=item Attempt to free temp prematurely: SV 0x%x
378
379(S debugging) Mortalized values are supposed to be freed by the
380free_tmps() routine.  This indicates that something else is freeing the
381SV before the free_tmps() routine gets a chance, which means that the
382free_tmps() routine will be freeing an unreferenced scalar when it does
383try to free it.
384
385=item Attempt to free unreferenced glob pointers
386
387(S internal) The reference counts got screwed up on symbol aliases.
388
389=item Attempt to free unreferenced scalar: SV 0x%x
390
391(S internal) Perl went to decrement the reference count of a scalar to
392see if it would go to 0, and discovered that it had already gone to 0
393earlier, and should have been freed, and in fact, probably was freed.
394This could indicate that SvREFCNT_dec() was called too many times, or
395that SvREFCNT_inc() was called too few times, or that the SV was
396mortalized when it shouldn't have been, or that memory has been
397corrupted.
398
399=item Attempt to pack pointer to temporary value
400
401(W pack) You tried to pass a temporary value (like the result of a
402function, or a computed expression) to the "p" pack() template.  This
403means the result contains a pointer to a location that could become
404invalid anytime, even before the end of the current statement.  Use
405literals or global values as arguments to the "p" pack() template to
406avoid this warning.
407
408=item Attempt to reload %s aborted.
409
410(F) You tried to load a file with C<use> or C<require> that failed to
411compile once already.  Perl will not try to compile this file again
412unless you delete its entry from %INC.  See L<perlfunc/require> and
413L<perlvar/%INC>.
414
415=item Attempt to set length of freed array
416
417(W misc) You tried to set the length of an array which has
418been freed.  You can do this by storing a reference to the
419scalar representing the last index of an array and later
420assigning through that reference.  For example
421
422    $r = do {my @a; \$#a};
423    $$r = 503
424
425=item Attempt to use reference as lvalue in substr
426
427(W substr) You supplied a reference as the first argument to substr()
428used as an lvalue, which is pretty strange.  Perhaps you forgot to
429dereference it first.  See L<perlfunc/substr>.
430
431=item Attribute prototype(%s) discards earlier prototype attribute in same sub
432
433(W misc) A sub was declared as sub foo : prototype(A) : prototype(B) {}, for
434example.  Since each sub can only have one prototype, the earlier
435declaration(s) are discarded while the last one is applied.
436
437=item av_reify called on tied array
438
439(S debugging) This indicates that something went wrong and Perl got I<very>
440confused about C<@_> or C<@DB::args> being tied.
441
442=item Bad arg length for %s, is %u, should be %d
443
444(F) You passed a buffer of the wrong size to one of msgctl(), semctl()
445or shmctl().  In C parlance, the correct sizes are, respectively,
446S<sizeof(struct msqid_ds *)>, S<sizeof(struct semid_ds *)>, and
447S<sizeof(struct shmid_ds *)>.
448
449=item Bad evalled substitution pattern
450
451(F) You've used the C</e> switch to evaluate the replacement for a
452substitution, but perl found a syntax error in the code to evaluate,
453most likely an unexpected right brace '}'.
454
455=item Bad filehandle: %s
456
457(F) A symbol was passed to something wanting a filehandle, but the
458symbol has no filehandle associated with it.  Perhaps you didn't do an
459open(), or did it in another package.
460
461=item Bad free() ignored
462
463(S malloc) An internal routine called free() on something that had never
464been malloc()ed in the first place.  Mandatory, but can be disabled by
465setting environment variable C<PERL_BADFREE> to 0.
466
467This message can be seen quite often with DB_File on systems with "hard"
468dynamic linking, like C<AIX> and C<OS/2>.  It is a bug of C<Berkeley DB>
469which is left unnoticed if C<DB> uses I<forgiving> system malloc().
470
471=item Bad infix plugin result (%zd) - did not consume entire identifier <%s>
472
473(F) A plugin using the C<PL_infix_plugin> mechanism to parse an infix
474keyword consumed part of a named identifier operator name but did not
475consume all of it.  This is not permitted as it leads to fragile parsing
476results.
477
478=item Badly placed ()'s
479
480(A) You've accidentally run your script through B<csh> instead
481of Perl.  Check the #! line, or manually feed your script into
482Perl yourself.
483
484=item Bad name after %s
485
486(F) You started to name a symbol by using a package prefix, and then
487didn't finish the symbol.  In particular, you can't interpolate outside
488of quotes, so
489
490    $var = 'myvar';
491    $sym = mypack::$var;
492
493is not the same as
494
495    $var = 'myvar';
496    $sym = "mypack::$var";
497
498=item Bad plugin affecting keyword '%s'
499
500(F) An extension using the keyword plugin mechanism violated the
501plugin API.
502
503=item Bad realloc() ignored
504
505(S malloc) An internal routine called realloc() on something that
506had never been malloc()ed in the first place.  Mandatory, but can
507be disabled by setting the environment variable C<PERL_BADFREE> to 1.
508
509=item Bad symbol for %s
510
511(P) An internal request asked to add an entry of the named type to something that
512wasn't a symbol table entry.
513
514=item Bad symbol for scalar
515
516(P) An internal request asked to add a scalar entry to something that
517wasn't a symbol table entry.
518
519=item Bareword found in conditional
520
521(W bareword) The compiler found a bareword where it expected a
522conditional, which often indicates that an || or && was parsed as part
523of the last argument of the previous construct, for example:
524
525    open FOO || die;
526
527It may also indicate a misspelled constant that has been interpreted as
528a bareword:
529
530    use constant TYPO => 1;
531    if (TYOP) { print "foo" }
532
533The C<strict> pragma is useful in avoiding such errors.
534
535=item Bareword in require contains "%s"
536
537=item Bareword in require maps to disallowed filename "%s"
538
539=item Bareword in require maps to empty filename
540
541(F) The bareword form of require has been invoked with a filename which could
542not have been generated by a valid bareword permitted by the parser.  You
543shouldn't be able to get this error from Perl code, but XS code may throw it
544if it passes an invalid module name to C<Perl_load_module>.
545
546=item Bareword in require must not start with a double-colon: "%s"
547
548(F) In C<require Bare::Word>, the bareword is not allowed to start with a
549double-colon.  Write C<require ::Foo::Bar> as  C<require Foo::Bar> instead.
550
551=item Bareword "%s" not allowed while "strict subs" in use
552
553(F) With "strict subs" in use, a bareword is only allowed as a
554subroutine identifier, in curly brackets or to the left of the "=>"
555symbol.  Perhaps you need to predeclare a subroutine?
556
557=item Bareword "%s" refers to nonexistent package
558
559(W bareword) You used a qualified bareword of the form C<Foo::>, but the
560compiler saw no other uses of that namespace before that point.  Perhaps
561you need to predeclare a package?
562
563=item Bareword filehandle "%s" not allowed under 'no feature "bareword_filehandles"'
564
565(F) You attempted to use a bareword filehandle with the
566C<bareword_filehandles> feature disabled.
567
568Only the built-in handles C<STDIN>, C<STDOUT>, C<STDERR>, C<ARGV>,
569C<ARGVOUT> and C<DATA> can be used with the C<bareword_filehandles>
570feature disabled.
571
572=item BEGIN failed--compilation aborted
573
574(F) An untrapped exception was raised while executing a BEGIN
575subroutine.  Compilation stops immediately and the interpreter is
576exited.
577
578=item BEGIN not safe after errors--compilation aborted
579
580(F) Perl found a C<BEGIN {}> subroutine (or a C<use> directive, which
581implies a C<BEGIN {}>) after one or more compilation errors had already
582occurred.  Since the intended environment for the C<BEGIN {}> could not
583be guaranteed (due to the errors), and since subsequent code likely
584depends on its correct operation, Perl just gave up.
585
586=item \%d better written as $%d
587
588(W syntax) Outside of patterns, backreferences live on as variables.
589The use of backslashes is grandfathered on the right-hand side of a
590substitution, but stylistically it's better to use the variable form
591because other Perl programmers will expect it, and it works better if
592there are more than 9 backreferences.
593
594=item Binary number > 0b11111111111111111111111111111111 non-portable
595
596(W portable) The binary number you specified is larger than 2**32-1
597(4294967295) and therefore non-portable between systems.  See
598L<perlport> for more on portability concerns.
599
600=item bind() on closed socket %s
601
602(W closed) You tried to do a bind on a closed socket.  Did you forget to
603check the return value of your socket() call?  See L<perlfunc/bind>.
604
605=item binmode() on closed filehandle %s
606
607(W unopened) You tried binmode() on a filehandle that was never opened.
608Check your control flow and number of arguments.
609
610=item Bit vector size > 32 non-portable
611
612(W portable) Using bit vector sizes larger than 32 is non-portable.
613
614=item Bizarre copy of %s
615
616(P) Perl detected an attempt to copy an internal value that is not
617copiable.
618
619=item Bizarre SvTYPE [%d]
620
621(P) When starting a new thread or returning values from a thread, Perl
622encountered an invalid data type.
623
624=item Both or neither range ends should be Unicode in regex; marked by
625S<<-- HERE> in m/%s/
626
627(W regexp) (only under C<S<use re 'strict'>> or within C<(?[...])>)
628
629In a bracketed character class in a regular expression pattern, you
630had a range which has exactly one end of it specified using C<\N{}>, and
631the other end is specified using a non-portable mechanism.  Perl treats
632the range as a Unicode range, that is, all the characters in it are
633considered to be the Unicode characters, and which may be different code
634points on some platforms Perl runs on.  For example, C<[\N{U+06}-\x08]>
635is treated as if you had instead said C<[\N{U+06}-\N{U+08}]>, that is it
636matches the characters whose code points in Unicode are 6, 7, and 8.
637But that C<\x08> might indicate that you meant something different, so
638the warning gets raised.
639
640=item Buffer overflow in prime_env_iter: %s
641
642(W internal) A warning peculiar to VMS.  While Perl was preparing to
643iterate over %ENV, it encountered a logical name or symbol definition
644which was too long, so it was truncated to the string shown.
645
646=item Built-in function '%s' is experimental
647
648(S experimental::builtin) A call is being made to a function in the
649C<builtin::> namespace, which is currently experimental. The existence
650or nature of the function may be subject to change in a future version
651of Perl.
652
653=item builtin::import can only be called at compile time
654
655(F) The C<import> method of the C<builtin> package was invoked when no code
656is currently being compiled. Since this method is used to introduce new
657lexical subroutines into the scope currently being compiled, this is not
658going to have any effect.
659
660=item Builtin version bundle "%s" is not supported by Perl
661
662(F) You attempted to C<use builtin :ver> for a version number that is either
663older than 5.39 (when the ability was added), or newer than the current perl
664version.
665
666=item Callback called exit
667
668(F) A subroutine invoked from an external package via call_sv()
669exited by calling exit.
670
671=item %s() called too early to check prototype
672
673(W prototype) You've called a function that has a prototype before the
674parser saw a definition or declaration for it, and Perl could not check
675that the call conforms to the prototype.  You need to either add an
676early prototype declaration for the subroutine in question, or move the
677subroutine definition ahead of the call to get proper prototype
678checking.  Alternatively, if you are certain that you're calling the
679function correctly, you may put an ampersand before the name to avoid
680the warning.  See L<perlsub>.
681
682=item Cannot assign :param(%s) to field %s because that name is already in use
683
684(F) An attempt was made to apply a parameter name to a field, when the name
685is already being used by another field in the same class, or one of its
686parent classes. This would cause a name clash so is not allowed.
687
688=item Cannot chr %f
689
690(F) You passed an invalid number (like an infinity or not-a-number) to C<chr>.
691
692=item Cannot complete in-place edit of %s: %s
693
694(F) Your perl script appears to have changed directory while
695performing an in-place edit of a file specified by a relative path,
696and your system doesn't include the directory relative POSIX functions
697needed to handle that.
698
699=item Cannot compress %f in pack
700
701(F) You tried compressing an infinity or not-a-number as an unsigned
702integer with BER, which makes no sense.
703
704=item Cannot compress integer in pack
705
706(F) An argument to pack("w",...) was too large to compress.
707The BER compressed integer format can only be used with positive
708integers, and you attempted to compress a very large number (> 1e308).
709See L<perlfunc/pack>.
710
711=item Cannot compress negative numbers in pack
712
713(F) An argument to pack("w",...) was negative.  The BER compressed integer
714format can only be used with positive integers.  See L<perlfunc/pack>.
715
716=item Cannot convert a reference to %s to typeglob
717
718(F) You manipulated Perl's symbol table directly, stored a reference
719in it, then tried to access that symbol via conventional Perl syntax.
720The access triggers Perl to autovivify that typeglob, but it there is
721no legal conversion from that type of reference to a typeglob.
722
723=item Cannot copy to %s
724
725(P) Perl detected an attempt to copy a value to an internal type that cannot
726be directly assigned to.
727
728=item Cannot create class %s as it already has a non-empty @ISA
729
730(F) An attempt was made to create a class out of a package that already has
731an C<@ISA> array, and the array is not empty.  This is not permitted, as it
732would lead to a class with inconsistent inheritance.
733
734=item Cannot create an object of incomplete class "%s"
735
736(F) An attempt was made to create an object of a class where the start
737of the class definition has been seen, but the class has not been
738completed.
739
740This can happen for a failed eval, or if you attempt to create an
741object at compile time before the class is complete:
742
743  eval "class Foo {"; Foo->new; # error
744  class Bar { BEGIN { Bar->new } }; # error
745
746=item Cannot find encoding "%s"
747
748(S io) You tried to apply an encoding that did not exist to a filehandle,
749either with open() or binmode().
750
751=item Cannot invoke a method of "%s" on an instance of "%s"
752
753(F) You tried to directly call a C<method> subroutine of one class by passing
754in a value that is an instance of a different class.  This is not permitted,
755as the method would not have access to the correct instance fields.
756
757=item Cannot invoke method on a non-instance
758
759(F) You tried to directly call a C<method> subroutine of a class by passing
760in a value that is not an instance of that class.  This is not permitted, as
761the method would not then have access to its instance fields.
762
763=item Cannot open %s as a dirhandle: it is already open as a filehandle
764
765(F) You tried to use opendir() to associate a dirhandle to a symbol (glob
766or scalar) that already holds a filehandle.  Since this idiom might render
767your code confusing, it was deprecated in Perl 5.10.  As of Perl 5.28, it
768is a fatal error.
769
770=item Cannot open %s as a filehandle: it is already open as a dirhandle
771
772(F) You tried to use open() to associate a filehandle to a symbol (glob
773or scalar) that already holds a dirhandle.  Since this idiom might render
774your code confusing, it was deprecated in Perl 5.10.  As of Perl 5.28, it
775is a fatal error.
776
777=item Cannot '%s' outside of a 'class'
778
779(F) You attempted to use one of the keywords that only makes sense inside
780a C<class> definition, at a location that is not inside such a class.
781
782=item Cannot pack %f with '%c'
783
784(F) You tried converting an infinity or not-a-number to an integer,
785which makes no sense.
786
787=item Cannot printf %f with '%c'
788
789(F) You tried printing an infinity or not-a-number as a character (%c),
790which makes no sense.  Maybe you meant '%s', or just stringifying it?
791
792=item Cannot reopen existing class "%s"
793
794(F) You tried to begin a C<class> definition for a class that already exists.
795A class may only have one definition block.
796
797=item Cannot set tied @DB::args
798
799(F) C<caller> tried to set C<@DB::args>, but found it tied.  Tying C<@DB::args>
800is not supported.  (Before this error was added, it used to crash.)
801
802=item Cannot tie unreifiable array
803
804(P) You somehow managed to call C<tie> on an array that does not
805keep a reference count on its arguments and cannot be made to
806do so.  Such arrays are not even supposed to be accessible to
807Perl code, but are only used internally.
808
809=item Cannot use __CLASS__ outside of a method or field initializer expression
810
811(F) A C<__CLASS__> expression yields the class name of the object instance
812executing the current method, and therefore it can only be placed inside an
813actual method (or method-like expression, such as a field initializer
814expression).
815
816=item Cannot yet reorder sv_vcatpvfn() arguments from va_list
817
818(F) Some XS code tried to use C<sv_vcatpvfn()> or a related function with a
819format string that specifies explicit indexes for some of the elements, and
820using a C-style variable-argument list (a C<va_list>).  This is not currently
821supported.  XS authors wanting to do this must instead construct a C array
822of C<SV*> scalars containing the arguments.
823
824=item Can only compress unsigned integers in pack
825
826(F) An argument to pack("w",...) was not an integer.  The BER compressed
827integer format can only be used with positive integers, and you attempted
828to compress something else.  See L<perlfunc/pack>.
829
830=item Can't "%s" out of a "defer" block
831
832(F) An attempt was made to jump out of the scope of a C<defer> block by using
833a control-flow statement such as C<return>, C<goto> or a loop control. This is
834not permitted.
835
836=item Can't "%s" out of a "finally" block
837
838(F) Similar to above, but involving a C<finally> block at the end of a
839C<try>/C<catch> construction rather than a C<defer> block.
840
841=item Can't bless an object reference
842
843(F) You attempted to call C<bless> on a value that already refers to a real
844object instance.
845
846=item Can't bless non-reference value
847
848(F) Only hard references may be blessed.  This is how Perl "enforces"
849encapsulation of objects.  See L<perlobj>.
850
851=item Can't "break" in a loop topicalizer
852
853(F) You called C<break>, but you're in a C<foreach> block rather than
854a C<given> block.  You probably meant to use C<next> or C<last>.
855
856=item Can't "break" outside a given block
857
858(F) You called C<break>, but you're not inside a C<given> block.
859
860=item Can't call destructor for 0x%p in global destruction
861
862(S) This should not happen. Internals code has set up a destructor
863using C<mortal_destructor_sv> or C<mortal_destructor_x> which is firing
864during global destruction. Please attempt to reduce the code that triggers
865this warning down to a small an example as possible and then report the
866problem to L<https://github.com/Perl/perl5/issues/new/choose>
867
868=item Can't call method "%s" on an undefined value
869
870(F) You used the syntax of a method call, but the slot filled by the
871object reference or package name contains an undefined value.  Something
872like this will reproduce the error:
873
874    $BADREF = undef;
875    process $BADREF 1,2,3;
876    $BADREF->process(1,2,3);
877
878=item Can't call method "%s" on unblessed reference
879
880(F) A method call must know in what package it's supposed to run.  It
881ordinarily finds this out from the object reference you supply, but you
882didn't supply an object reference in this case.  A reference isn't an
883object reference until it has been blessed.  See L<perlobj>.
884
885=item Can't call method "%s" without a package or object reference
886
887(F) You used the syntax of a method call, but the slot filled by the
888object reference or package name contains an expression that returns a
889defined value which is neither an object reference nor a package name.
890Something like this will reproduce the error:
891
892    $BADREF = 42;
893    process $BADREF 1,2,3;
894    $BADREF->process(1,2,3);
895
896=item Can't call mro_isa_changed_in() on anonymous symbol table
897
898(P) Perl got confused as to whether a hash was a plain hash or a
899symbol table hash when trying to update @ISA caches.
900
901=item Can't call mro_method_changed_in() on anonymous symbol table
902
903(F) An XS module tried to call C<mro_method_changed_in> on a hash that was
904not attached to the symbol table.
905
906=item Can't chdir to %s
907
908(F) You called C<perl -x/foo/bar>, but F</foo/bar> is not a directory
909that you can chdir to, possibly because it doesn't exist.
910
911=item Can't coerce %s to %s in %s
912
913(F) Certain types of SVs, in particular real symbol table entries
914(typeglobs), can't be forced to stop being what they are.  So you can't
915say things like:
916
917    *foo += 1;
918
919You CAN say
920
921    $foo = *foo;
922    $foo += 1;
923
924but then $foo no longer contains a glob.
925
926=item Can't "continue" outside a when block
927
928(F) You called C<continue>, but you're not inside a C<when>
929or C<default> block.
930
931=item can't convert empty path
932
933(F) On Cygwin, you called a path conversion function with an empty path.
934Only non-empty paths are legal.
935
936=item Can't create pipe mailbox
937
938(P) An error peculiar to VMS.  The process is suffering from exhausted
939quotas or other plumbing problems.
940
941=item Can't declare %s in "%s"
942
943(F) Only scalar, array, and hash variables may be declared as "my", "our" or
944"state" variables.  They must have ordinary identifiers as names.
945
946=item Can't "default" outside a topicalizer
947
948(F) You have used a C<default> block that is neither inside a
949C<foreach> loop nor a C<given> block.  (Note that this error is
950issued on exit from the C<default> block, so you won't get the
951error if you use an explicit C<continue>.)
952
953=item Can't determine class of operator %s, assuming BASEOP
954
955(S) This warning indicates something wrong in the internals of perl.
956Perl was trying to find the class (e.g. LISTOP) of a particular OP,
957and was unable to do so. This is likely to be due to a bug in the perl
958internals, or due to a bug in XS code which manipulates perl optrees.
959
960=item Can't do inplace edit: %s is not a regular file
961
962(S inplace) You tried to use the B<-i> switch on a special file, such as
963a file in /dev, a FIFO or an uneditable directory.  The file was ignored.
964
965=item Can't do inplace edit on %s: %s
966
967(S inplace) The creation of the new file failed for the indicated
968reason.
969
970=item Can't do inplace edit: %s would not be unique
971
972(S inplace) Your filesystem does not support filenames longer than 14
973characters and Perl was unable to create a unique filename during
974inplace editing with the B<-i> switch.  The file was ignored.
975
976=item Can't do %s("%s") on non-UTF-8 locale; resolved to "%s".
977
978(W locale) You are 1) running under "C<use locale>"; 2) the current
979locale is not a UTF-8 one; 3) you tried to do the designated case-change
980operation on the specified Unicode character; and 4) the result of this
981operation would mix Unicode and locale rules, which likely conflict.
982Mixing of different rule types is forbidden, so the operation was not
983done; instead the result is the indicated value, which is the best
984available that uses entirely Unicode rules.  That turns out to almost
985always be the original character, unchanged.
986
987It is generally a bad idea to mix non-UTF-8 locales and Unicode, and
988this issue is one of the reasons why.  This warning is raised when
989Unicode rules would normally cause the result of this operation to
990contain a character that is in the range specified by the locale,
9910..255, and hence is subject to the locale's rules, not Unicode's.
992
993If you are using locale purely for its characteristics related to things
994like its numeric and time formatting (and not C<LC_CTYPE>), consider
995using a restricted form of the locale pragma (see L<perllocale/The "use
996locale" pragma>) like "S<C<use locale ':not_characters'>>".
997
998Note that failed case-changing operations done as a result of
999case-insensitive C</i> regular expression matching will show up in this
1000warning as having the C<fc> operation (as that is what the regular
1001expression engine calls behind the scenes.)
1002
1003=item Can't do waitpid with flags
1004
1005(F) This machine doesn't have either waitpid() or wait4(), so only
1006waitpid() without flags is emulated.
1007
1008=item Can't emulate -%s on #! line
1009
1010(F) The #! line specifies a switch that doesn't make sense at this
1011point.  For example, it'd be kind of silly to put a B<-x> on the #!
1012line.
1013
1014=item Can't %s %s-endian %ss on this platform
1015
1016(F) Your platform's byte-order is neither big-endian nor little-endian,
1017or it has a very strange pointer size.  Packing and unpacking big- or
1018little-endian floating point values and pointers may not be possible.
1019See L<perlfunc/pack>.
1020
1021=item Can't exec "%s": %s
1022
1023(W exec) A system(), exec(), or piped open call could not execute the
1024named program for the indicated reason.  Typical reasons include: the
1025permissions were wrong on the file, the file wasn't found in
1026C<$ENV{PATH}>, the executable in question was compiled for another
1027architecture, or the #! line in a script points to an interpreter that
1028can't be run for similar reasons.  (Or maybe your system doesn't support
1029#! at all.)
1030
1031=item Can't exec %s
1032
1033(F) Perl was trying to execute the indicated program for you because
1034that's what the #! line said.  If that's not what you wanted, you may
1035need to mention "perl" on the #! line somewhere.
1036
1037=item Can't execute %s
1038
1039(F) You used the B<-S> switch, but the copies of the script to execute
1040found in the PATH did not have correct permissions.
1041
1042=item Can't find an opnumber for "%s"
1043
1044(F) A string of a form C<CORE::word> was given to prototype(), but there
1045is no builtin with the name C<word>.
1046
1047=item Can't find label %s
1048
1049(F) You said to goto a label that isn't mentioned anywhere that it's
1050possible for us to go to.  See L<perlfunc/goto>.
1051
1052=item Can't find %s on PATH
1053
1054(F) You used the B<-S> switch, but the script to execute could not be
1055found in the PATH.
1056
1057=item Can't find %s on PATH, '.' not in PATH
1058
1059(F) You used the B<-S> switch, but the script to execute could not be
1060found in the PATH, or at least not with the correct permissions.  The
1061script exists in the current directory, but PATH prohibits running it.
1062
1063=item Can't find string terminator %s anywhere before EOF
1064
1065(F) Perl strings can stretch over multiple lines.  This message means
1066that the closing delimiter was omitted.  Because bracketed quotes count
1067nesting levels, the following is missing its final parenthesis:
1068
1069    print q(The character '(' starts a side comment.);
1070
1071If you're getting this error from a here-document, you may have
1072included unseen whitespace before or after your closing tag or there
1073may not be a linebreak after it.  A good programmer's editor will have
1074a way to help you find these characters (or lack of characters).  See
1075L<perlop> for the full details on here-documents.
1076
1077=item Can't find Unicode property definition "%s"
1078
1079=item Can't find Unicode property definition "%s" in regex; marked by <-- HERE in m/%s/
1080
1081(F) The named property which you specified via C<\p> or C<\P> is not one
1082known to Perl.  Perhaps you misspelled the name?  See
1083L<perluniprops/Properties accessible through \p{} and \P{}>
1084for a complete list of available official
1085properties.  If it is a
1086L<user-defined property|perlunicode/User-Defined Character Properties>
1087it must have been defined by the time the regular expression is
1088matched.
1089
1090If you didn't mean to use a Unicode property, escape the C<\p>, either
1091by C<\\p> (just the C<\p>) or by C<\Q\p> (the rest of the string, or
1092until C<\E>).
1093
1094=item Can't fork: %s
1095
1096(F) A fatal error occurred while trying to fork while opening a
1097pipeline.
1098
1099=item Can't fork, trying again in 5 seconds
1100
1101(W pipe) A fork in a piped open failed with EAGAIN and will be retried
1102after five seconds.
1103
1104=item Can't get filespec - stale stat buffer?
1105
1106(S) A warning peculiar to VMS.  This arises because of the difference
1107between access checks under VMS and under the Unix model Perl assumes.
1108Under VMS, access checks are done by filename, rather than by bits in
1109the stat buffer, so that ACLs and other protections can be taken into
1110account.  Unfortunately, Perl assumes that the stat buffer contains all
1111the necessary information, and passes it, instead of the filespec, to
1112the access-checking routine.  It will try to retrieve the filespec using
1113the device name and FID present in the stat buffer, but this works only
1114if you haven't made a subsequent call to the CRTL stat() routine,
1115because the device name is overwritten with each call.  If this warning
1116appears, the name lookup failed, and the access-checking routine gave up
1117and returned FALSE, just to be conservative.  (Note: The access-checking
1118routine knows about the Perl C<stat> operator and file tests, so you
1119shouldn't ever see this warning in response to a Perl command; it arises
1120only if some internal code takes stat buffers lightly.)
1121
1122=item Can't get pipe mailbox device name
1123
1124(P) An error peculiar to VMS.  After creating a mailbox to act as a
1125pipe, Perl can't retrieve its name for later use.
1126
1127=item Can't get SYSGEN parameter value for MAXBUF
1128
1129(P) An error peculiar to VMS.  Perl asked $GETSYI how big you want your
1130mailbox buffers to be, and didn't get an answer.
1131
1132=item Can't "goto" into a binary or list expression
1133
1134(F) A "goto" statement was executed to jump into the middle of a binary
1135or list expression.  You can't get there from here.  The reason for this
1136restriction is that the interpreter would get confused as to how many
1137arguments there are, resulting in stack corruption or crashes.  This
1138error occurs in cases such as these:
1139
1140    goto F;
1141    print do { F: }; # Can't jump into the arguments to print
1142
1143    goto G;
1144    $x + do { G: $y }; # How is + supposed to get its first operand?
1145
1146=item Can't "goto" into a "defer" block
1147
1148(F) A C<goto> statement was executed to jump into the scope of a C<defer>
1149block.  This is not permitted.
1150
1151=item Can't "goto" into a "given" block
1152
1153(F) A "goto" statement was executed to jump into the middle of a C<given>
1154block.  You can't get there from here.  See L<perlfunc/goto>.
1155
1156=item Can't "goto" into the middle of a foreach loop
1157
1158(F) A "goto" statement was executed to jump into the middle of a foreach
1159loop.  You can't get there from here.  See L<perlfunc/goto>.
1160
1161=item Can't "goto" out of a pseudo block
1162
1163(F) A "goto" statement was executed to jump out of what might look like
1164a block, except that it isn't a proper block.  This usually occurs if
1165you tried to jump out of a sort() block or subroutine, which is a no-no.
1166See L<perlfunc/goto>.
1167
1168=item Can't goto subroutine from an eval-%s
1169
1170(F) The "goto subroutine" call can't be used to jump out of an eval
1171"string" or block.
1172
1173=item Can't goto subroutine from a sort sub (or similar callback)
1174
1175(F) The "goto subroutine" call can't be used to jump out of the
1176comparison sub for a sort(), or from a similar callback (such
1177as the reduce() function in List::Util).
1178
1179=item Can't goto subroutine outside a subroutine
1180
1181(F) The deeply magical "goto subroutine" call can only replace one
1182subroutine call for another.  It can't manufacture one out of whole
1183cloth.  In general you should be calling it out of only an AUTOLOAD
1184routine anyway.  See L<perlfunc/goto>.
1185
1186=item Can't ignore signal CHLD, forcing to default
1187
1188(W signal) Perl has detected that it is being run with the SIGCHLD
1189signal (sometimes known as SIGCLD) disabled.  Since disabling this
1190signal will interfere with proper determination of exit status of child
1191processes, Perl has reset the signal to its default value.  This
1192situation typically indicates that the parent program under which Perl
1193may be running (e.g. cron) is being very careless.
1194
1195=item Can't kill a non-numeric process ID
1196
1197(F) Process identifiers must be (signed) integers.  It is a fatal error to
1198attempt to kill() an undefined, empty-string or otherwise non-numeric
1199process identifier.
1200
1201=item Can't "last" outside a loop block
1202
1203(F) A "last" statement was executed to break out of the current block,
1204except that there's this itty bitty problem called there isn't a current
1205block.  Note that an "if" or "else" block doesn't count as a "loopish"
1206block, as doesn't a block given to sort(), map() or grep().  You can
1207usually double the curlies to get the same effect though, because the
1208inner curlies will be considered a block that loops once.  See
1209L<perlfunc/last>.
1210
1211=item Can't linearize anonymous symbol table
1212
1213(F) Perl tried to calculate the method resolution order (MRO) of a
1214package, but failed because the package stash has no name.
1215
1216=item Can't load '%s' for module %s
1217
1218(F) The module you tried to load failed to load a dynamic extension.
1219This may either mean that you upgraded your version of perl to one
1220that is incompatible with your old dynamic extensions (which is known
1221to happen between major versions of perl), or (more likely) that your
1222dynamic extension was built against an older version of the library
1223that is installed on your system.  You may need to rebuild your old
1224dynamic extensions.
1225
1226=item Can't localize lexical variable %s
1227
1228(F) You used local on a variable name that was previously declared as a
1229lexical variable using "my" or "state".  This is not allowed.  If you
1230want to localize a package variable of the same name, qualify it with
1231the package name.
1232
1233=item Can't localize through a reference
1234
1235(F) You said something like C<local $$ref>, which Perl can't currently
1236handle, because when it goes to restore the old value of whatever $ref
1237pointed to after the scope of the local() is finished, it can't be sure
1238that $ref will still be a reference.
1239
1240=item Can't locate %s
1241
1242(F) You said to C<do> (or C<require>, or C<use>) a file that couldn't be found.
1243Perl looks for the file in all the locations mentioned in @INC, unless
1244the file name included the full path to the file.  Perhaps you need
1245to set the PERL5LIB or PERL5OPT environment variable to say where the
1246extra library is, or maybe the script needs to add the library name
1247to @INC.  Or maybe you just misspelled the name of the file.  See
1248L<perlfunc/require> and L<lib>.
1249
1250=item Can't locate auto/%s.al in @INC
1251
1252(F) A function (or method) was called in a package which allows
1253autoload, but there is no function to autoload.  Most probable causes
1254are a misprint in a function/method name or a failure to C<AutoSplit>
1255the file, say, by doing C<make install>.
1256
1257=item Can't locate loadable object for module %s in @INC
1258
1259(F) The module you loaded is trying to load an external library, like
1260for example, F<foo.so> or F<bar.dll>, but the L<DynaLoader> module was
1261unable to locate this library.  See L<DynaLoader>.
1262
1263=item Can't locate object method "%s" via package "%s"
1264
1265(F) You called a method correctly, and it correctly indicated a package
1266functioning as a class, but that package doesn't define that particular
1267method, nor does any of its base classes.  See L<perlobj>.
1268
1269=item Can't locate object method "%s" via package "%s" (perhaps you forgot
1270to load "%s"?)
1271
1272(F) You called a method on a class that did not exist, and the method
1273could not be found in UNIVERSAL.  This often means that a method
1274requires a package that has not been loaded.
1275
1276=item Can't locate object method "INC", nor "INCDIR" nor string overload via package "%s" %s in @INC
1277
1278(F) You pushed an object, either directly or via an array reference hook,
1279into C<@INC>, but the object doesn't support any known hook methods, nor
1280a string overload and is also not a blessed CODE reference. In short the
1281C<require> function does not know what to do with the object.
1282See also L<perlfunc/require>.
1283
1284=item Attempt to call undefined %s method with arguments ("%s"%s)
1285via package "%s" (Perhaps you forgot to load the package?)
1286
1287(D deprecated::missing_import_called_with_args) You called the
1288C<import()> or C<unimport()> method of a class that has no import method
1289defined in its inheritance graph, and passed an argument to the method.
1290This is very often the sign of a misspelled package name in a use or
1291require statement that has silently succeded due to a case insensitive
1292file system.
1293
1294Another common reason this may happen is when mistakenly attempting to
1295import or unimport a symbol from a class definition or package which
1296does not use C<Exporter> or otherwise define its own C<import> or
1297C<unimport> method.
1298
1299=item Can't locate package %s for @%s::ISA
1300
1301(W syntax) The @ISA array contained the name of another package that
1302doesn't seem to exist.
1303
1304=item Can't locate PerlIO%s
1305
1306(F) You tried to use in open() a PerlIO layer that does not exist,
1307e.g. open(FH, ">:nosuchlayer", "somefile").
1308
1309=item Can't make list assignment to %ENV on this system
1310
1311(F) List assignment to %ENV is not supported on some systems, notably
1312VMS.
1313
1314=item Can't make loaded symbols global on this platform while loading %s
1315
1316(S) A module passed the flag 0x01 to DynaLoader::dl_load_file() to request
1317that symbols from the stated file are made available globally within the
1318process, but that functionality is not available on this platform.  Whilst
1319the module likely will still work, this may prevent the perl interpreter
1320from loading other XS-based extensions which need to link directly to
1321functions defined in the C or XS code in the stated file.
1322
1323=item Can't modify %s in %s
1324
1325(F) You aren't allowed to assign to the item indicated, or otherwise try
1326to change it, such as with an auto-increment.
1327
1328=item Can't modify non-lvalue subroutine call of &%s
1329
1330=item Can't modify non-lvalue subroutine call of &%s in %s
1331
1332(F) Subroutines meant to be used in lvalue context should be declared as
1333such.  See L<perlsub/"Lvalue subroutines">.
1334
1335=item Can't modify reference to %s in %s assignment
1336
1337(F) Only a limited number of constructs can be used as the argument to a
1338reference constructor on the left-hand side of an assignment, and what
1339you used was not one of them.  See L<perlref/Assigning to References>.
1340
1341=item Can't modify reference to localized parenthesized array in list
1342assignment
1343
1344(F) Assigning to C<\local(@array)> or C<\(local @array)> is not supported, as
1345it is not clear exactly what it should do.  If you meant to make @array
1346refer to some other array, use C<\@array = \@other_array>.  If you want to
1347make the elements of @array aliases of the scalars referenced on the
1348right-hand side, use C<\(@array) = @scalar_refs>.
1349
1350=item Can't modify reference to parenthesized hash in list assignment
1351
1352(F) Assigning to C<\(%hash)> is not supported.  If you meant to make %hash
1353refer to some other hash, use C<\%hash = \%other_hash>.  If you want to
1354make the elements of %hash into aliases of the scalars referenced on the
1355right-hand side, use a hash slice: C<\@hash{@keys} = @those_scalar_refs>.
1356
1357=item Can't msgrcv to read-only var
1358
1359(F) The target of a msgrcv must be modifiable to be used as a receive
1360buffer.
1361
1362=item Can't "next" outside a loop block
1363
1364(F) A "next" statement was executed to reiterate the current block, but
1365there isn't a current block.  Note that an "if" or "else" block doesn't
1366count as a "loopish" block, as doesn't a block given to sort(), map() or
1367grep().  You can usually double the curlies to get the same effect
1368though, because the inner curlies will be considered a block that loops
1369once.  See L<perlfunc/next>.
1370
1371=item Can't open %s: %s
1372
1373(S inplace) The implicit opening of a file through use of the C<< <> >>
1374filehandle, either implicitly under the C<-n> or C<-p> command-line
1375switches, or explicitly, failed for the indicated reason.  Usually
1376this is because you don't have read permission for a file which
1377you named on the command line.
1378
1379(F) You tried to call perl with the B<-e> switch, but F</dev/null> (or
1380your operating system's equivalent) could not be opened.
1381
1382=item Can't open a reference
1383
1384(W io) You tried to open a scalar reference for reading or writing,
1385using the 3-arg open() syntax:
1386
1387    open FH, '>', $ref;
1388
1389but your version of perl is compiled without perlio, and this form of
1390open is not supported.
1391
1392=item Can't open bidirectional pipe
1393
1394(W pipe) You tried to say C<open(CMD, "|cmd|")>, which is not supported.
1395You can try any of several modules in the Perl library to do this, such
1396as IPC::Open2.  Alternately, direct the pipe's output to a file using
1397">", and then read it in under a different file handle.
1398
1399=item Can't open error file %s as stderr
1400
1401(F) An error peculiar to VMS.  Perl does its own command line
1402redirection, and couldn't open the file specified after '2>' or '2>>' on
1403the command line for writing.
1404
1405=item Can't open input file %s as stdin
1406
1407(F) An error peculiar to VMS.  Perl does its own command line
1408redirection, and couldn't open the file specified after '<' on the
1409command line for reading.
1410
1411=item Can't open output file %s as stdout
1412
1413(F) An error peculiar to VMS.  Perl does its own command line
1414redirection, and couldn't open the file specified after '>' or '>>' on
1415the command line for writing.
1416
1417=item Can't open output pipe (name: %s)
1418
1419(P) An error peculiar to VMS.  Perl does its own command line
1420redirection, and couldn't open the pipe into which to send data destined
1421for stdout.
1422
1423=item Can't open perl script "%s": %s
1424
1425(F) The script you specified can't be opened for the indicated reason.
1426
1427If you're debugging a script that uses #!, and normally relies on the
1428shell's $PATH search, the -S option causes perl to do that search, so
1429you don't have to type the path or C<`which $scriptname`>.
1430
1431=item Can't read CRTL environ
1432
1433(S) A warning peculiar to VMS.  Perl tried to read an element of %ENV
1434from the CRTL's internal environment array and discovered the array was
1435missing.  You need to figure out where your CRTL misplaced its environ
1436or define F<PERL_ENV_TABLES> (see L<perlvms>) so that environ is not
1437searched.
1438
1439=item Can't redeclare "%s" in "%s"
1440
1441(F) A "my", "our" or "state" declaration was found within another declaration,
1442such as C<my ($x, my($y), $z)> or C<our (my $x)>.
1443
1444=item Can't "redo" outside a loop block
1445
1446(F) A "redo" statement was executed to restart the current block, but
1447there isn't a current block.  Note that an "if" or "else" block doesn't
1448count as a "loopish" block, as doesn't a block given to sort(), map()
1449or grep().  You can usually double the curlies to get the same effect
1450though, because the inner curlies will be considered a block that
1451loops once.  See L<perlfunc/redo>.
1452
1453=item Can't remove %s: %s, skipping file
1454
1455(S inplace) You requested an inplace edit without creating a backup
1456file.  Perl was unable to remove the original file to replace it with
1457the modified file.  The file was left unmodified.
1458
1459=item Can't rename in-place work file '%s' to '%s': %s
1460
1461(F) When closed implicitly, the temporary file for in-place editing
1462couldn't be renamed to the original filename.
1463
1464=item Can't rename %s to %s: %s, skipping file
1465
1466(F) The rename done by the B<-i> switch failed for some reason,
1467probably because you don't have write permission to the directory.
1468
1469=item Can't reopen input pipe (name: %s) in binary mode
1470
1471(P) An error peculiar to VMS.  Perl thought stdin was a pipe, and tried
1472to reopen it to accept binary data.  Alas, it failed.
1473
1474=item Can't represent character for Ox%X on this platform
1475
1476(F) There is a hard limit to how big a character code point can be due
1477to the fundamental properties of UTF-8, especially on EBCDIC
1478platforms.  The given code point exceeds that.  The only work-around is
1479to not use such a large code point.
1480
1481=item Can't reset %ENV on this system
1482
1483(F) You called C<reset('E')> or similar, which tried to reset
1484all variables in the current package beginning with "E".  In
1485the main package, that includes %ENV.  Resetting %ENV is not
1486supported on some systems, notably VMS.
1487
1488=item Can't resolve method "%s" overloading "%s" in package "%s"
1489
1490(F)(P) Error resolving overloading specified by a method name (as
1491opposed to a subroutine reference): no such method callable via the
1492package.  If the method name is C<???>, this is an internal error.
1493
1494=item Can't return %s from lvalue subroutine
1495
1496(F) Perl detected an attempt to return illegal lvalues (such as
1497temporary or readonly values) from a subroutine used as an lvalue.  This
1498is not allowed.
1499
1500=item Can't return outside a subroutine
1501
1502(F) The return statement was executed in mainline code, that is, where
1503there was no subroutine call to return out of.  See L<perlsub>.
1504
1505=item Can't return %s to lvalue scalar context
1506
1507(F) You tried to return a complete array or hash from an lvalue
1508subroutine, but you called the subroutine in a way that made Perl
1509think you meant to return only one value.  You probably meant to
1510write parentheses around the call to the subroutine, which tell
1511Perl that the call should be in list context.
1512
1513=item Can't take log of %g
1514
1515(F) For ordinary real numbers, you can't take the logarithm of a
1516negative number or zero.  There's a Math::Complex package that comes
1517standard with Perl, though, if you really want to do that for the
1518negative numbers.
1519
1520=item Can't take sqrt of %g
1521
1522(F) For ordinary real numbers, you can't take the square root of a
1523negative number.  There's a Math::Complex package that comes standard
1524with Perl, though, if you really want to do that.
1525
1526=item Can't undef active subroutine
1527
1528(F) You can't undefine a routine that's currently running.  You can,
1529however, redefine it while it's running, and you can even undef the
1530redefined subroutine while the old routine is running.  Go figure.
1531
1532=item Can't unweaken a nonreference
1533
1534(F) You attempted to unweaken something that was not a reference.  Only
1535references can be unweakened.
1536
1537=item Can't upgrade %s (%d) to %d
1538
1539(P) The internal sv_upgrade routine adds "members" to an SV, making it
1540into a more specialized kind of SV.  The top several SV types are so
1541specialized, however, that they cannot be interconverted.  This message
1542indicates that such a conversion was attempted.
1543
1544=item Can't use '%c' after -mname
1545
1546(F) You tried to call perl with the B<-m> switch, but you put something
1547other than "=" after the module name.
1548
1549=item Can't use a hash as a reference
1550
1551(F) You tried to use a hash as a reference, as in
1552C<< %foo->{"bar"} >> or C<< %$ref->{"hello"} >>.  Versions of perl
1553<= 5.22.0 used to allow this syntax, but shouldn't
1554have.  This was deprecated in perl 5.6.1.
1555
1556=item Can't use an array as a reference
1557
1558(F) You tried to use an array as a reference, as in
1559C<< @foo->[23] >> or C<< @$ref->[99] >>.  Versions of perl <= 5.22.0
1560used to allow this syntax, but shouldn't have.  This
1561was deprecated in perl 5.6.1.
1562
1563=item Can't use anonymous symbol table for method lookup
1564
1565(F) The internal routine that does method lookup was handed a symbol
1566table that doesn't have a name.  Symbol tables can become anonymous
1567for example by undefining stashes: C<undef %Some::Package::>.
1568
1569=item Can't use an undefined value as %s reference
1570
1571(F) A value used as either a hard reference or a symbolic reference must
1572be a defined value.  This helps to delurk some insidious errors.
1573
1574=item Can't use bareword ("%s") as %s ref while "strict refs" in use
1575
1576(F) Only hard references are allowed by "strict refs".  Symbolic
1577references are disallowed.  See L<perlref>.
1578
1579=item Can't use %! because Errno.pm is not available
1580
1581(F) The first time the C<%!> hash is used, perl automatically loads the
1582Errno.pm module.  The Errno module is expected to tie the %! hash to
1583provide symbolic names for C<$!> errno values.
1584
1585=item Can't use both '<' and '>' after type '%c' in %s
1586
1587(F) A type cannot be forced to have both big-endian and little-endian
1588byte-order at the same time, so this combination of modifiers is not
1589allowed.  See L<perlfunc/pack>.
1590
1591=item Can't use 'defined(@array)' (Maybe you should just omit the defined()?)
1592
1593(F) defined() is not useful on arrays because it
1594checks for an undefined I<scalar> value.  If you want to see if the
1595array is empty, just use C<if (@array) { # not empty }> for example.
1596
1597=item Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)
1598
1599(F) C<defined()> is not usually right on hashes.
1600
1601Although C<defined %hash> is false on a plain not-yet-used hash, it
1602becomes true in several non-obvious circumstances, including iterators,
1603weak references, stash names, even remaining true after C<undef %hash>.
1604These things make C<defined %hash> fairly useless in practice, so it now
1605generates a fatal error.
1606
1607If a check for non-empty is what you wanted then just put it in boolean
1608context (see L<perldata/Scalar values>):
1609
1610    if (%hash) {
1611       # not empty
1612    }
1613
1614If you had C<defined %Foo::Bar::QUUX> to check whether such a package
1615variable exists then that's never really been reliable, and isn't
1616a good way to enquire about the features of a package, or whether
1617it's loaded, etc.
1618
1619=item Can't use %s for loop variable
1620
1621(P) The parser got confused when trying to parse a C<foreach> loop.
1622
1623=item Can't use global %s in %s
1624
1625(F) You tried to declare a magical variable as a lexical variable.  This
1626is not allowed, because the magic can be tied to only one location
1627(namely the global variable) and it would be incredibly confusing to
1628have variables in your program that looked like magical variables but
1629weren't.
1630
1631=item Can't use '%c' in a group with different byte-order in %s
1632
1633(F) You attempted to force a different byte-order on a type
1634that is already inside a group with a byte-order modifier.
1635For example you cannot force little-endianness on a type that
1636is inside a big-endian group.
1637
1638=item Can't use "my %s" in sort comparison
1639
1640(F) The global variables $a and $b are reserved for sort comparisons.
1641You mentioned $a or $b in the same line as the <=> or cmp operator,
1642and the variable had earlier been declared as a lexical variable.
1643Either qualify the sort variable with the package name, or rename the
1644lexical variable.
1645
1646=item Can't use %s ref as %s ref
1647
1648(F) You've mixed up your reference types.  You have to dereference a
1649reference of the type needed.  You can use the ref() function to
1650test the type of the reference, if need be.
1651
1652=item Can't use string ("%s") as %s ref while "strict refs" in use
1653
1654=item Can't use string ("%s"...) as %s ref while "strict refs" in use
1655
1656(F) You've told Perl to dereference a string, something which
1657C<use strict> blocks to prevent it happening accidentally.  See
1658L<perlref/"Symbolic references">.  This can be triggered by an C<@> or C<$>
1659in a double-quoted string immediately before interpolating a variable,
1660for example in C<"user @$twitter_id">, which says to treat the contents
1661of C<$twitter_id> as an array reference; use a C<\> to have a literal C<@>
1662symbol followed by the contents of C<$twitter_id>: C<"user \@$twitter_id">.
1663
1664=item Can't use subscript on %s
1665
1666(F) The compiler tried to interpret a bracketed expression as a
1667subscript.  But to the left of the brackets was an expression that
1668didn't look like a hash or array reference, or anything else subscriptable.
1669
1670=item Can't use \%c to mean $%c in expression
1671
1672(W syntax) In an ordinary expression, backslash is a unary operator that
1673creates a reference to its argument.  The use of backslash to indicate a
1674backreference to a matched substring is valid only as part of a regular
1675expression pattern.  Trying to do this in ordinary Perl code produces a
1676value that prints out looking like SCALAR(0xdecaf).  Use the $1 form
1677instead.
1678
1679=item Can't weaken a nonreference
1680
1681(F) You attempted to weaken something that was not a reference.  Only
1682references can be weakened.
1683
1684=item Can't "when" outside a topicalizer
1685
1686(F) You have used a when() block that is neither inside a C<foreach>
1687loop nor a C<given> block.  (Note that this error is issued on exit
1688from the C<when> block, so you won't get the error if the match fails,
1689or if you use an explicit C<continue>.)
1690
1691=item Can't x= to read-only value
1692
1693(F) You tried to repeat a constant value (often the undefined value)
1694with an assignment operator, which implies modifying the value itself.
1695Perhaps you need to copy the value to a temporary, and repeat that.
1696
1697=item catch block requires a (VAR)
1698
1699(F) You tried to use the C<try> and C<catch> syntax of C<use feature 'try'>
1700but did not include the error variable in the C<catch> block. The
1701parenthesized variable name is not optional, unlike in some other forms of
1702syntax you may be familiar with from CPAN modules or other languages.
1703
1704The required syntax is
1705
1706    try { ... }
1707    catch ($var) { ... }
1708
1709=item Changing use VERSION while another use VERSION is in scope is now deprecated
1710
1711(W deprecated) Once you have a C<use VERSION> statement in scope, any
1712C<use VERSION> statement that requests a different version is now deprecated,
1713due to the increasing complexity of swapping from one prevailing version to
1714another.
1715
1716It is suggested that you do not try to mix multiple different version
1717declarations within the same file as it leads to complex behaviours about the
1718visibility of features and builtin functions, as well as confusing human
1719readers.
1720
1721If it is essential to have different C<use VERSION> declarations in different
1722regions of the same file, you should surround each one by its own enclosing
1723scope so the two do not mix.
1724
1725  {
1726    use v5.20;
1727    ...
1728  }
1729  {
1730    use v5.36;
1731    ...
1732  }
1733
1734=item Character following "\c" must be printable ASCII
1735
1736(F) In C<\cI<X>>, I<X> must be a printable (non-control) ASCII character.
1737
1738Note that ASCII characters that don't map to control characters are
1739discouraged, and will generate the warning (when enabled)
1740L</""\c%c" is more clearly written simply as "%s"">.
1741
1742=item Character following \%c must be '{' or a single-character Unicode property name in regex; marked by <-- HERE in m/%s/
1743
1744(F) (In the above the C<%c> is replaced by either C<p> or C<P>.)  You
1745specified something that isn't a legal Unicode property name.  Most
1746Unicode properties are specified by C<\p{...}>.  But if the name is a
1747single character one, the braces may be omitted.
1748
1749=item Character in 'C' format wrapped in pack
1750
1751(W pack) You said
1752
1753    pack("C", $x)
1754
1755where $x is either less than 0 or more than 255; the C<"C"> format is
1756only for encoding native operating system characters (ASCII, EBCDIC,
1757and so on) and not for Unicode characters, so Perl behaved as if you meant
1758
1759    pack("C", $x & 255)
1760
1761If you actually want to pack Unicode codepoints, use the C<"U"> format
1762instead.
1763
1764=item Character in 'c' format wrapped in pack
1765
1766(W pack) You said
1767
1768    pack("c", $x)
1769
1770where $x is either less than -128 or more than 127; the C<"c"> format
1771is only for encoding native operating system characters (ASCII, EBCDIC,
1772and so on) and not for Unicode characters, so Perl behaved as if you meant
1773
1774    pack("c", $x & 255);
1775
1776If you actually want to pack Unicode codepoints, use the C<"U"> format
1777instead.
1778
1779=item Character in '%c' format wrapped in unpack
1780
1781(W unpack) You tried something like
1782
1783   unpack("H", "\x{2a1}")
1784
1785where the format expects to process a byte (a character with a value
1786below 256), but a higher value was provided instead.  Perl uses the
1787value modulus 256 instead, as if you had provided:
1788
1789   unpack("H", "\x{a1}")
1790
1791=item Character in 'W' format wrapped in pack
1792
1793(W pack) You said
1794
1795    pack("U0W", $x)
1796
1797where $x is either less than 0 or more than 255.  However, C<U0>-mode
1798expects all values to fall in the interval [0, 255], so Perl behaved
1799as if you meant:
1800
1801    pack("U0W", $x & 255)
1802
1803=item Character(s) in '%c' format wrapped in pack
1804
1805(W pack) You tried something like
1806
1807   pack("u", "\x{1f3}b")
1808
1809where the format expects to process a sequence of bytes (character with a
1810value below 256), but some of the characters had a higher value.  Perl
1811uses the character values modulus 256 instead, as if you had provided:
1812
1813   pack("u", "\x{f3}b")
1814
1815=item Character(s) in '%c' format wrapped in unpack
1816
1817(W unpack) You tried something like
1818
1819   unpack("s", "\x{1f3}b")
1820
1821where the format expects to process a sequence of bytes (character with a
1822value below 256), but some of the characters had a higher value.  Perl
1823uses the character values modulus 256 instead, as if you had provided:
1824
1825   unpack("s", "\x{f3}b")
1826
1827=item charnames alias definitions may not contain a sequence of multiple
1828spaces; marked by S<<-- HERE> in %s
1829
1830(F) You defined a character name which had multiple space characters
1831in a row.  Change them to single spaces.  Usually these names are
1832defined in the C<:alias> import argument to C<use charnames>, but they
1833could be defined by a translator installed into C<$^H{charnames}>.  See
1834L<charnames/CUSTOM ALIASES>.
1835
1836=item chdir() on unopened filehandle %s
1837
1838(W unopened) You tried chdir() on a filehandle that was never opened.
1839
1840=item "\c%c" is more clearly written simply as "%s"
1841
1842(W syntax) The C<\cI<X>> construct is intended to be a way to specify
1843non-printable characters.  You used it for a printable one, which
1844is better written as simply itself, perhaps preceded by a backslash
1845for non-word characters.  Doing it the way you did is not portable
1846between ASCII and EBCDIC platforms.
1847
1848=item Class already has a superclass, cannot add another
1849
1850(F) You attempted to specify a second superclass for a C<class> by using
1851the C<:isa> attribute, when one is already specified.  Unlike classes
1852whose instances are created with C<bless>, classes created via the
1853C<class> keyword cannot have more than one superclass.
1854
1855=item Class attribute %s requires a value
1856
1857(F) You specified an attribute for a class that would require a value to
1858be passed in parentheses, but did not provide one.  Remember that
1859whitespace is B<not> permitted between the attribute name and its value;
1860you must write this as
1861
1862    class Example::Class :attr(VALUE) ...
1863
1864=item class is experimental
1865
1866(S experimental::class) This warning is emitted if you use the C<class>
1867keyword of C<use feature 'class'>.  This keyword is currently
1868experimental and its behaviour may change in future releases of Perl.
1869
1870=item Class :isa attribute requires a class but "%s" is not one
1871
1872(F) When creating a subclass using the C<class> C<:isa> attribute, the
1873named superclass must also be a real class created using the C<class>
1874keyword.
1875
1876=item Cloning substitution context is unimplemented
1877
1878(F) Creating a new thread inside the C<s///> operator is not supported.
1879
1880=item closedir() attempted on invalid dirhandle %s
1881
1882(W io) The dirhandle you tried to close is either closed or not really
1883a dirhandle.  Check your control flow.
1884
1885=item close() on unopened filehandle %s
1886
1887(W unopened) You tried to close a filehandle that was never opened.
1888
1889=item Closure prototype called
1890
1891(F) If a closure has attributes, the subroutine passed to an attribute
1892handler is the prototype that is cloned when a new closure is created.
1893This subroutine cannot be called.
1894
1895=item \C no longer supported in regex; marked by S<<-- HERE> in m/%s/
1896
1897(F) The \C character class used to allow a match of single byte
1898within a multi-byte utf-8 character, but was removed in v5.24 as
1899it broke encapsulation and its implementation was extremely buggy.
1900If you really need to process the individual bytes, you probably
1901want to convert your string to one where each underlying byte is
1902stored as a character, with utf8::encode().
1903
1904=item Code missing after '/'
1905
1906(F) You had a (sub-)template that ends with a '/'.  There must be
1907another template code following the slash.  See L<perlfunc/pack>.
1908
1909=item Code point 0x%X is not Unicode, and not portable
1910
1911(S non_unicode portable) You had a code point that has never been in any
1912standard, so it is likely that languages other than Perl will NOT
1913understand it.  This code point also will not fit in a 32-bit word on
1914ASCII platforms and therefore is non-portable between systems.
1915
1916At one time, it was legal in some standards to have code points up to
19170x7FFF_FFFF, but not higher, and this code point is higher.
1918
1919Acceptance of these code points is a Perl extension, and you should
1920expect that nothing other than Perl can handle them; Perl itself on
1921EBCDIC platforms before v5.24 does not handle them.
1922
1923Perl also makes no guarantees that the representation of these code
1924points won't change at some point in the future, say when machines
1925become available that have larger than a 64-bit word.  At that time,
1926files containing any of these, written by an older Perl might require
1927conversion before being readable by a newer Perl.
1928
1929=item Code point 0x%X is not Unicode, may not be portable
1930
1931(S non_unicode) You had a code point above the Unicode maximum
1932of U+10FFFF.
1933
1934Perl allows strings to contain a superset of Unicode code points, but
1935these may not be accepted by other languages/systems.  Further, even if
1936these languages/systems accept these large code points, they may have
1937chosen a different representation for them than the UTF-8-like one that
1938Perl has, which would mean files are not exchangeable between them and
1939Perl.
1940
1941On EBCDIC platforms, code points above 0x3FFF_FFFF have a different
1942representation in Perl v5.24 than before, so any file containing these
1943that was written before that version will require conversion before
1944being readable by a later Perl.
1945
1946=item %s: Command not found
1947
1948(A) You've accidentally run your script through B<csh> or another shell
1949instead of Perl.  Check the #! line, or manually feed your script into
1950Perl yourself.  The #! line at the top of your file could look like
1951
1952  #!/usr/bin/perl
1953
1954=item %s: command not found
1955
1956(A) You've accidentally run your script through B<bash> or another shell
1957instead of Perl.  Check the #! line, or manually feed your script into
1958Perl yourself.  The #! line at the top of your file could look like
1959
1960  #!/usr/bin/perl
1961
1962=item %s: command not found: %s
1963
1964(A) You've accidentally run your script through B<zsh> or another shell
1965instead of Perl.  Check the #! line, or manually feed your script into
1966Perl yourself.  The #! line at the top of your file could look like
1967
1968  #!/usr/bin/perl
1969
1970=item Compilation failed in require
1971
1972(F) Perl could not compile a file specified in a C<require> statement.
1973Perl uses this generic message when none of the errors that it
1974encountered were severe enough to halt compilation immediately.
1975
1976=item connect() on closed socket %s
1977
1978(W closed) You tried to do a connect on a closed socket.  Did you forget
1979to check the return value of your socket() call?  See
1980L<perlfunc/connect>.
1981
1982=item Constant(%s): Call to &{$^H{%s}} did not return a defined value
1983
1984(F) The subroutine registered to handle constant overloading
1985(see L<overload>) or a custom charnames handler (see
1986L<charnames/CUSTOM TRANSLATORS>) returned an undefined value.
1987
1988=item Constant(%s): $^H{%s} is not defined
1989
1990(F) The parser found inconsistencies while attempting to define an
1991overloaded constant.  Perhaps you forgot to load the corresponding
1992L<overload> pragma?
1993
1994=item Constant is not %s reference
1995
1996(F) A constant value (perhaps declared using the C<use constant> pragma)
1997is being dereferenced, but it amounts to the wrong type of reference.
1998The message indicates the type of reference that was expected.  This
1999usually indicates a syntax error in dereferencing the constant value.
2000See L<perlsub/"Constant Functions"> and L<constant>.
2001
2002=item Constants from lexical variables potentially modified elsewhere are no longer permitted
2003
2004(F) You wrote something like
2005
2006    my $var;
2007    $sub = sub () { $var };
2008
2009but $var is referenced elsewhere and could be modified after the C<sub>
2010expression is evaluated.  Either it is explicitly modified elsewhere
2011(C<$var = 3>) or it is passed to a subroutine or to an operator like
2012C<printf> or C<map>, which may or may not modify the variable.
2013
2014Traditionally, Perl has captured the value of the variable at that
2015point and turned the subroutine into a constant eligible for inlining.
2016In those cases where the variable can be modified elsewhere, this
2017breaks the behavior of closures, in which the subroutine captures
2018the variable itself, rather than its value, so future changes to the
2019variable are reflected in the subroutine's return value.
2020
2021This usage was deprecated, and as of Perl 5.32 is no longer allowed,
2022making it possible to change the behavior in the future.
2023
2024If you intended for the subroutine to be eligible for inlining, then
2025make sure the variable is not referenced elsewhere, possibly by
2026copying it:
2027
2028    my $var2 = $var;
2029    $sub = sub () { $var2 };
2030
2031If you do want this subroutine to be a closure that reflects future
2032changes to the variable that it closes over, add an explicit C<return>:
2033
2034    my $var;
2035    $sub = sub () { return $var };
2036
2037=item Constant subroutine %s redefined
2038
2039(W redefine)(S) You redefined a subroutine which had previously
2040been eligible for inlining.  See L<perlsub/"Constant Functions">
2041for commentary and workarounds.
2042
2043=item Constant subroutine %s undefined
2044
2045(W misc) You undefined a subroutine which had previously been eligible
2046for inlining.  See L<perlsub/"Constant Functions"> for commentary and
2047workarounds.
2048
2049=item Constant(%s) unknown
2050
2051(F) The parser found inconsistencies either while attempting
2052to define an overloaded constant, or when trying to find the
2053character name specified in the C<\N{...}> escape.  Perhaps you
2054forgot to load the corresponding L<overload> pragma?
2055
2056=item :const is not permitted on named subroutines
2057
2058(F) The "const" attribute causes an anonymous subroutine to be run and
2059its value captured at the time that it is cloned.  Named subroutines are
2060not cloned like this, so the attribute does not make sense on them.
2061
2062=item Copy method did not return a reference
2063
2064(F) The method which overloads "=" is buggy.  See
2065L<overload/Copy Constructor>.
2066
2067=item &CORE::%s cannot be called directly
2068
2069(F) You tried to call a subroutine in the C<CORE::> namespace
2070with C<&foo> syntax or through a reference.  Some subroutines
2071in this package cannot yet be called that way, but must be
2072called as barewords.  Something like this will work:
2073
2074    BEGIN { *shove = \&CORE::push; }
2075    shove @array, 1,2,3; # pushes on to @array
2076
2077=item CORE::%s is not a keyword
2078
2079(F) The CORE:: namespace is reserved for Perl keywords.
2080
2081=item Corrupted regexp opcode %d > %d
2082
2083(P) This is either an error in Perl, or, if you're using
2084one, your L<custom regular expression engine|perlreapi>.  If not the
2085latter, report the problem to L<https://github.com/Perl/perl5/issues/new/choose>.
2086
2087=item corrupted regexp pointers
2088
2089(P) The regular expression engine got confused by what the regular
2090expression compiler gave it.
2091
2092=item corrupted regexp program
2093
2094(P) The regular expression engine got passed a regexp program without a
2095valid magic number.
2096
2097=item Corrupt malloc ptr 0x%x at 0x%x
2098
2099(P) The malloc package that comes with Perl had an internal failure.
2100
2101=item Count after length/code in unpack
2102
2103(F) You had an unpack template indicating a counted-length string, but
2104you have also specified an explicit size for the string.  See
2105L<perlfunc/pack>.
2106
2107=item Declaring references is experimental
2108
2109(S experimental::declared_refs) This warning is emitted if you use
2110a reference constructor on the right-hand side of C<my>, C<state>, C<our>, or
2111C<local>.  Simply suppress the warning if you want to use the feature, but
2112know that in doing so you are taking the risk of using an experimental
2113feature which may change or be removed in a future Perl version:
2114
2115    no warnings "experimental::declared_refs";
2116    use feature "declared_refs";
2117    $fooref = my \$foo;
2118
2119=for comment
2120The following are used in lib/diagnostics.t for testing two =items that
2121share the same description.  Changes here need to be propagated to there
2122
2123=item Deep recursion on anonymous subroutine
2124
2125=item Deep recursion on subroutine "%s"
2126
2127(W recursion) This subroutine has called itself (directly or indirectly)
2128100 times more than it has returned.  This probably indicates an
2129infinite recursion, unless you're writing strange benchmark programs, in
2130which case it indicates something else.
2131
2132This threshold can be changed from 100, by recompiling the F<perl> binary,
2133setting the C pre-processor macro C<PERL_SUB_DEPTH_WARN> to the desired value.
2134
2135=item (?(DEFINE)....) does not allow branches in regex; marked by
2136S<<-- HERE> in m/%s/
2137
2138(F) You used something like C<(?(DEFINE)...|..)> which is illegal.  The
2139most likely cause of this error is that you left out a parenthesis inside
2140of the C<....> part.
2141
2142The S<<-- HERE> shows whereabouts in the regular expression the problem was
2143discovered.
2144
2145=item %s defines neither package nor VERSION--version check failed
2146
2147(F) You said something like "use Module 42" but in the Module file
2148there are neither package declarations nor a C<$VERSION>.
2149
2150=item delete argument is not a HASH or ARRAY element or slice
2151
2152(F) The argument to C<delete> must be either a hash or array element,
2153such as:
2154
2155    $foo{$bar}
2156    $ref->{"susie"}[12]
2157
2158or a hash or array slice, such as:
2159
2160    @foo[$bar, $baz, $xyzzy]
2161    $ref->[12]->@{"susie", "queue"}
2162
2163or a hash key/value or array index/value slice, such as:
2164
2165    %foo[$bar, $baz, $xyzzy]
2166    $ref->[12]->%{"susie", "queue"}
2167
2168=item Delimiter for here document is too long
2169
2170(F) In a here document construct like C<<<FOO>, the label C<FOO> is too
2171long for Perl to handle.  You have to be seriously twisted to write code
2172that triggers this error.
2173
2174=item DESTROY created new reference to dead object '%s'
2175
2176(F) A DESTROY() method created a new reference to the object which is
2177just being DESTROYed.  Perl is confused, and prefers to abort rather
2178than to create a dangling reference.
2179
2180=item Did not produce a valid header
2181
2182See L</500 Server error>.
2183
2184=item %s did not return a true value
2185
2186(F) A required (or used) file must return a true value to indicate that
2187it compiled correctly and ran its initialization code correctly.  It's
2188traditional to end such a file with a "1;", though any true value would
2189do.  See L<perlfunc/require>.
2190
2191=item (Did you mean &%s instead?)
2192
2193(W misc) You probably referred to an imported subroutine &FOO as $FOO or
2194some such.
2195
2196=item (Did you mean "local" instead of "our"?)
2197
2198(W shadow) Remember that "our" does not localize the declared global
2199variable.  You have declared it again in the same lexical scope, which
2200seems superfluous.
2201
2202=item (Did you mean $ or @ instead of %?)
2203
2204(W) You probably said %hash{$key} when you meant $hash{$key} or
2205@hash{@keys}.  On the other hand, maybe you just meant %hash and got
2206carried away.
2207
2208=item Died
2209
2210(F) You passed die() an empty string (the equivalent of C<die "">) or
2211you called it with no args and C<$@> was empty.
2212
2213=item Document contains no data
2214
2215See L</500 Server error>.
2216
2217=item %s does not define %s::VERSION--version check failed
2218
2219(F) You said something like "use Module 42" but the Module did not
2220define a C<$VERSION>.
2221
2222=item '/' does not take a repeat count in %s
2223
2224(F) You cannot put a repeat count of any kind right after the '/' code.
2225See L<perlfunc/pack>.
2226
2227=item do "%s" failed, '.' is no longer in @INC; did you mean do "./%s"?
2228
2229(D deprecated::dot_in_inc) Previously C< do "somefile"; > would search
2230the current directory for the specified file. Since perl v5.26.0, F<.>
2231has been removed from C<@INC> by default, so this is no longer true. To
2232search the current directory (and only the current directory) you can
2233write C< do "./somefile"; >.
2234
2235=item '%s' does not appear to be an imported builtin function
2236
2237(F) An attempt was made to remove a previously-imported lexical from
2238L<builtin> by using the C<unimport> method (likely via C<no builtin ...>
2239syntax), but the requested function has not been imported into the current
2240scope.
2241
2242=item Don't know how to get file name
2243
2244(P) C<PerlIO_getname>, a perl internal I/O function specific to VMS, was
2245somehow called on another platform.  This should not happen.
2246
2247=item Don't know how to handle magic of type \%o
2248
2249(P) The internal handling of magical variables has been cursed.
2250
2251=item Downgrading a use VERSION declaration to below v5.11 is not permitted
2252
2253(F) A C<use VERSION> statement that requests a version below v5.11
2254(when the effects of C<use strict> would be disabled) has been found
2255after a previous declaration of one having a larger number (which would
2256have enabled these effects).  Because of a change to the way that
2257C<use VERSION> interacts with the strictness flags, this is no longer
2258supported.
2259
2260=item (Do you need to predeclare %s?)
2261
2262(S syntax) This is an educated guess made in conjunction with the message
2263"%s found where operator expected".  It often means a subroutine or module
2264name is being referenced that hasn't been declared yet.  This may be
2265because of ordering problems in your file, or because of a missing
2266"sub", "package", "require", or "use" statement.  If you're referencing
2267something that isn't defined yet, you don't actually have to define the
2268subroutine or package before the current location.  You can use an empty
2269"sub foo;" or "package FOO;" to enter a "forward" declaration.
2270
2271=item dump() must be written as CORE::dump() as of Perl 5.30
2272
2273(F) You used the obsolete C<dump()> built-in function.  That was deprecated in
2274Perl 5.8.0.  As of Perl 5.30 it must be written in fully qualified format:
2275C<CORE::dump()>.
2276
2277See L<perlfunc/dump>.
2278
2279=item dump is not supported
2280
2281(F) Your machine doesn't support dump/undump.
2282
2283=item Duplicate free() ignored
2284
2285(S malloc) An internal routine called free() on something that had
2286already been freed.
2287
2288=item Duplicate modifier '%c' after '%c' in %s
2289
2290(W unpack) You have applied the same modifier more than once after a
2291type in a pack template.  See L<perlfunc/pack>.
2292
2293=item each on anonymous %s will always start from the beginning
2294
2295(W syntax) You called L<each|perlfunc/each> on an anonymous hash or
2296array.  Since a new hash or array is created each time, each() will
2297restart iterating over your hash or array every time.
2298
2299=item elseif should be elsif
2300
2301(S syntax) There is no keyword "elseif" in Perl because Larry thinks
2302it's ugly.  Your code will be interpreted as an attempt to call a method
2303named "elseif" for the class returned by the following block.  This is
2304unlikely to be what you want.
2305
2306=item Empty \%c in regex; marked by S<<-- HERE> in m/%s/
2307
2308=item Empty \%c{}
2309
2310=item Empty \%c{} in regex; marked by S<<-- HERE> in m/%s/
2311
2312(F) You used something like C<\b{}>, C<\B{}>, C<\o{}>, C<\p>, C<\P>, or
2313C<\x> without specifying anything for it to operate on.
2314
2315Unfortunately, for backwards compatibility reasons, an empty C<\x> is
2316legal outside S<C<use re 'strict'>> and expands to a NUL character.
2317
2318=item Empty (?) without any modifiers in regex; marked by <-- HERE in m/%s/
2319
2320(W regexp) (only under C<S<use re 'strict'>>)
2321C<(?)> does nothing, so perhaps this is a typo.
2322
2323=item ${^ENCODING} is no longer supported
2324
2325(F) The special variable C<${^ENCODING}>, formerly used to implement
2326the C<encoding> pragma, is no longer supported as of Perl 5.26.0.
2327
2328Setting it to anything other than C<undef> is a fatal error as of Perl
23295.28.
2330
2331=item ${^HOOK}{%s} may only be a CODE reference or undef
2332
2333(F) You attempted to assign something other than undef or a CODE ref to
2334C<%{^HOOK}>. Hooks may only be CODE refs. See L<perlvar/%{^HOOK}> for
2335details.
2336
2337=item Attempt to set unknown hook '%s' in %{^HOOK}
2338
2339(F) You attempted to assign something other than undef or a CODE ref to
2340C<%{^HOOK}>. Hooks may only be CODE refs. See L<perlvar/%{^HOOK}> for
2341details.
2342
2343=item entering effective %s failed
2344
2345(F) While under the C<use filetest> pragma, switching the real and
2346effective uids or gids failed.
2347
2348=item %ENV is aliased to %s
2349
2350(F) You're running under taint mode, and the C<%ENV> variable has been
2351aliased to another hash, so it doesn't reflect anymore the state of the
2352program's environment.  This is potentially insecure.
2353
2354=item Error converting file specification %s
2355
2356(F) An error peculiar to VMS.  Because Perl may have to deal with file
2357specifications in either VMS or Unix syntax, it converts them to a
2358single form when it must operate on them directly.  Either you've passed
2359an invalid file specification to Perl, or you've found a case the
2360conversion routines don't handle.  Drat.
2361
2362=item Error %s in expansion of %s
2363
2364(F) An error was encountered in handling a user-defined property
2365(L<perlunicode/User-Defined Character Properties>).  These are
2366programmer written subroutines, hence subject to errors that may
2367prevent them from compiling or running.  The calls to these subs are
2368C<eval>'d, and if there is a failure, this message is raised, using the
2369contents of C<$@> from the failed C<eval>.
2370
2371Another possibility is that tainted data was encountered somewhere in
2372the chain of expanding the property.  If so, the message wording will
2373indicate that this is the problem.  See L</Insecure user-defined
2374property %s>.
2375
2376=item Eval-group in insecure regular expression
2377
2378(F) Perl detected tainted data when trying to compile a regular
2379expression that contains the C<(?{ ... })> zero-width assertion, which
2380is unsafe.  See L<perlre/(?{ code })>, and L<perlsec>.
2381
2382=item Eval-group not allowed at runtime, use re 'eval' in regex m/%s/
2383
2384(F) Perl tried to compile a regular expression containing the
2385C<(?{ ... })> zero-width assertion at run time, as it would when the
2386pattern contains interpolated values.  Since that is a security risk,
2387it is not allowed.  If you insist, you may still do this by using the
2388C<re 'eval'> pragma or by explicitly building the pattern from an
2389interpolated string at run time and using that in an eval().  See
2390L<perlre/(?{ code })>.
2391
2392=item Eval-group not allowed, use re 'eval' in regex m/%s/
2393
2394(F) A regular expression contained the C<(?{ ... })> zero-width
2395assertion, but that construct is only allowed when the C<use re 'eval'>
2396pragma is in effect.  See L<perlre/(?{ code })>.
2397
2398=item EVAL without pos change exceeded limit in regex; marked by
2399S<<-- HERE> in m/%s/
2400
2401(F) You used a pattern that nested too many EVAL calls without consuming
2402any text.  Restructure the pattern so that text is consumed.
2403
2404The S<<-- HERE> shows whereabouts in the regular expression the problem was
2405discovered.
2406
2407=item Excessively long <> operator
2408
2409(F) The contents of a <> operator may not exceed the maximum size of a
2410Perl identifier.  If you're just trying to glob a long list of
2411filenames, try using the glob() operator, or put the filenames into a
2412variable and glob that.
2413
2414=item exec? I'm not *that* kind of operating system
2415
2416(F) The C<exec> function is not implemented on some systems, e.g.
2417Catamount. See L<perlport>.
2418
2419=item %sExecution of %s aborted due to compilation errors.
2420
2421(F) The final summary message when a Perl compilation fails.
2422
2423=item Execution of %s aborted due to compilation errors.
2424
2425(F) The final summary message when a Perl compilation fails.
2426
2427=item exists argument is not a HASH or ARRAY element or a subroutine
2428
2429(F) The argument to C<exists> must be a hash or array element or a
2430subroutine with an ampersand, such as:
2431
2432    $foo{$bar}
2433    $ref->{"susie"}[12]
2434    &do_something
2435
2436=item exists argument is not a subroutine name
2437
2438(F) The argument to C<exists> for C<exists &sub> must be a subroutine name,
2439and not a subroutine call.  C<exists &sub()> will generate this error.
2440
2441=item Exiting eval via %s
2442
2443(W exiting) You are exiting an eval by unconventional means, such as a
2444goto, or a loop control statement.
2445
2446=item Exiting format via %s
2447
2448(W exiting) You are exiting a format by unconventional means, such as a
2449goto, or a loop control statement.
2450
2451=item Exiting pseudo-block via %s
2452
2453(W exiting) You are exiting a rather special block construct (like a
2454sort block or subroutine) by unconventional means, such as a goto, or a
2455loop control statement.  See L<perlfunc/sort>.
2456
2457=item Exiting subroutine via %s
2458
2459(W exiting) You are exiting a subroutine by unconventional means, such
2460as a goto, or a loop control statement.
2461
2462=item Exiting substitution via %s
2463
2464(W exiting) You are exiting a substitution by unconventional means, such
2465as a return, a goto, or a loop control statement.
2466
2467=item Expected %s reference in export_lexically
2468
2469(F) The type of a reference given to L<builtin/export_lexically> did not
2470match the sigil of the preceding name, or the value was not a reference at
2471all.
2472
2473=item Expecting close bracket in regex; marked by S<<-- HERE> in m/%s/
2474
2475(F) You wrote something like
2476
2477 (?13
2478
2479to denote a capturing group of the form
2480L<C<(?I<PARNO>)>|perlre/(?PARNO) (?-PARNO) (?+PARNO) (?R) (?0)>,
2481but omitted the C<")">.
2482
2483=item Expecting interpolated extended charclass in regex; marked by <--
2484HERE in m/%s/
2485
2486(F) It looked like you were attempting to interpolate an
2487already-compiled extended character class, like so:
2488
2489 my $thai_or_lao = qr/(?[ \p{Thai} + \p{Lao} ])/;
2490 ...
2491 qr/(?[ \p{Digit} & $thai_or_lao ])/;
2492
2493But the marked code isn't syntactically correct to be such an
2494interpolated class.
2495
2496=item Experimental aliasing via reference not enabled
2497
2498(F) To do aliasing via references, you must first enable the feature:
2499
2500    no warnings "experimental::refaliasing";
2501    use feature "refaliasing";
2502    \$x = \$y;
2503
2504=item Experimental %s on scalar is now forbidden
2505
2506(F) An experimental feature added in Perl 5.14 allowed C<each>, C<keys>,
2507C<push>, C<pop>, C<shift>, C<splice>, C<unshift>, and C<values> to be called with a
2508scalar argument.  This experiment is considered unsuccessful, and
2509has been removed.  The C<postderef> feature may meet your needs better.
2510
2511=item Experimental subroutine signatures not enabled
2512
2513(F) To use subroutine signatures, you must first enable them:
2514
2515    use feature "signatures";
2516    sub foo ($left, $right) { ... }
2517
2518=item Explicit blessing to '' (assuming package main)
2519
2520(W misc) You are blessing a reference to a zero length string.  This has
2521the effect of blessing the reference into the package main.  This is
2522usually not what you want.  Consider providing a default target package,
2523e.g. bless($ref, $p || 'MyPackage');
2524
2525=item export_lexically can only be called at compile time
2526
2527(F) L<builtin/export_lexically> was called at runtime.  Because it creates
2528new names in the lexical scope currently being compiled, it can only be
2529called from code inside C<BEGIN> block in that scope.
2530
2531=item %s: Expression syntax
2532
2533(A) You've accidentally run your script through B<csh> instead of Perl.
2534Check the #! line, or manually feed your script into Perl yourself.
2535
2536=item %s failed--call queue aborted
2537
2538(F) An untrapped exception was raised while executing a UNITCHECK,
2539CHECK, INIT, or END subroutine.  Processing of the remainder of the
2540queue of such routines has been prematurely ended.
2541
2542=item Failed to close in-place work file %s: %s
2543
2544(F) Closing an output file from in-place editing, as with the C<-i>
2545command-line switch, failed.
2546
2547=item False [] range "%s" in regex; marked by S<<-- HERE> in m/%s/
2548
2549(W regexp)(F) A character class range must start and end at a literal
2550character, not another character class like C<\d> or C<[:alpha:]>.  The "-"
2551in your false range is interpreted as a literal "-".  In a C<(?[...])>
2552construct, this is an error, rather than a warning.  Consider quoting
2553the "-", "\-".  The S<<-- HERE> shows whereabouts in the regular expression
2554the problem was discovered.  See L<perlre>.
2555
2556=item Fatal VMS error (status=%d) at %s, line %d
2557
2558(P) An error peculiar to VMS.  Something untoward happened in a VMS
2559system service or RTL routine; Perl's exit status should provide more
2560details.  The filename in "at %s" and the line number in "line %d" tell
2561you which section of the Perl source code is distressed.
2562
2563=item fcntl is not implemented
2564
2565(F) Your machine apparently doesn't implement fcntl().  What is this, a
2566PDP-11 or something?
2567
2568=item FETCHSIZE returned a negative value
2569
2570(F) A tied array claimed to have a negative number of elements, which
2571is not possible.
2572
2573=item Field already has a parameter name, cannot add another
2574
2575(F) A field may have at most one application of the C<:param> attribute to
2576assign a parameter name to it; once applied a second one is not allowed.
2577
2578=item Field attribute %s requires a value
2579
2580(F) You specified an attribute for a field that would require a value to
2581be passed in parentheses, but did not provide one.  Remember that
2582whitespace is B<not> permitted between the attribute name and its value;
2583you must write this as
2584
2585    field $var :attr(VALUE) ...
2586
2587=item field is experimental
2588
2589(S experimental::class) This warning is emitted if you use the C<field>
2590keyword of C<use feature 'class'>.  This keyword is currently
2591experimental and its behaviour may change in future releases of Perl.
2592
2593=item Field %s is not accessible outside a method
2594
2595(F) An attempt was made to access a field variable of a class from code
2596that does not appear inside the body of a C<method> subroutine.  This is not
2597permitted, as only methods will have access to the fields of an instance.
2598
2599=item Field %s of "%s" is not accessible in a method of "%s"
2600
2601(F) An attempt was made to access a field variable of a class, from a
2602method of another class nested inside the one that actually defined it.
2603This is not permitted, as only methods defined by a given class are
2604permitted to access fields of that class.
2605
2606=item Field too wide in 'u' format in pack
2607
2608(W pack) Each line in an uuencoded string starts with a length indicator
2609which can't encode values above 63.  So there is no point in asking for
2610a line length bigger than that.  Perl will behave as if you specified
2611C<u63> as the format.
2612
2613=item Filehandle %s opened only for input
2614
2615(W io) You tried to write on a read-only filehandle.  If you intended
2616it to be a read-write filehandle, you needed to open it with "+<" or
2617"+>" or "+>>" instead of with "<" or nothing.  If you intended only to
2618write the file, use ">" or ">>".  See L<perlfunc/open>.
2619
2620=item Filehandle %s opened only for output
2621
2622(W io) You tried to read from a filehandle opened only for writing, If
2623you intended it to be a read/write filehandle, you needed to open it
2624with "+<" or "+>" or "+>>" instead of with ">".  If you intended only to
2625read from the file, use "<".  See L<perlfunc/open>.  Another possibility
2626is that you attempted to open filedescriptor 0 (also known as STDIN) for
2627output (maybe you closed STDIN earlier?).
2628
2629=item Filehandle %s reopened as %s only for input
2630
2631(W io) You opened for reading a filehandle that got the same filehandle id
2632as STDOUT or STDERR.  This occurred because you closed STDOUT or STDERR
2633previously.
2634
2635=item Filehandle STDIN reopened as %s only for output
2636
2637(W io) You opened for writing a filehandle that got the same filehandle id
2638as STDIN.  This occurred because you closed STDIN previously.
2639
2640=item Filehandle STD%s reopened as %s only for input
2641
2642(W io) You opened for reading a filehandle that got the same filehandle id
2643as STDOUT or STDERR.  This occurred because you closed the handle previously.
2644
2645=item Final $ should be \$ or $name
2646
2647(F) You must now decide whether the final $ in a string was meant to be
2648a literal dollar sign, or was meant to introduce a variable name that
2649happens to be missing.  So you have to put either the backslash or the
2650name.
2651
2652=item defer is experimental
2653
2654(S experimental::defer) The C<defer> block modifier is experimental. If you
2655want to use the feature, disable the warning with
2656C<no warnings 'experimental::defer'>, but know that in doing so you are taking
2657the risk that your code may break in a future Perl version.
2658
2659=item flock() on closed filehandle %s
2660
2661(W closed) The filehandle you're attempting to flock() got itself closed
2662some time before now.  Check your control flow.  flock() operates on
2663filehandles.  Are you attempting to call flock() on a dirhandle by the
2664same name?
2665
2666=item for my (...) is experimental
2667
2668(S experimental::for_list) This warning is emitted if you use C<for> to
2669iterate multiple values at a time. This syntax is currently experimental
2670and its behaviour may change in future releases of Perl.
2671
2672=item Forked open '%s' not meaningful in <>
2673
2674(S inplace) You had C<|-> or C<-|> in C<@ARGV> and tried to use C<< <>
2675>> to read from it.
2676
2677Previously this would fork and produce a confusing error message.
2678
2679=item Format not terminated
2680
2681(F) A format must be terminated by a line with a solitary dot.  Perl got
2682to the end of your file without finding such a line.
2683
2684=item Format %s redefined
2685
2686(W redefine) You redefined a format.  To suppress this warning, say
2687
2688    {
2689	no warnings 'redefine';
2690	eval "format NAME =...";
2691    }
2692
2693=item Found = in conditional, should be ==
2694
2695(W syntax) You said
2696
2697    if ($foo = 123)
2698
2699when you meant
2700
2701    if ($foo == 123)
2702
2703(or something like that).
2704
2705=item %s found where operator expected
2706
2707(S syntax) The Perl lexer knows whether to expect a term or an operator.
2708If it sees what it knows to be a term when it was expecting to see an
2709operator, it gives you this warning.  Usually it indicates that an
2710operator or delimiter was omitted, such as a semicolon.
2711
2712=item gdbm store returned %d, errno %d, key "%s"
2713
2714(S) A warning from the GDBM_File extension that a store failed.
2715
2716=item gethostent not implemented
2717
2718(F) Your C library apparently doesn't implement gethostent(), probably
2719because if it did, it'd feel morally obligated to return every hostname
2720on the Internet.
2721
2722=item get%sname() on closed socket %s
2723
2724(W closed) You tried to get a socket or peer socket name on a closed
2725socket.  Did you forget to check the return value of your socket() call?
2726
2727=item getpwnam returned invalid UIC %#o for user "%s"
2728
2729(S) A warning peculiar to VMS.  The call to C<sys$getuai> underlying the
2730C<getpwnam> operator returned an invalid UIC.
2731
2732=item getsockopt() on closed socket %s
2733
2734(W closed) You tried to get a socket option on a closed socket.  Did you
2735forget to check the return value of your socket() call?  See
2736L<perlfunc/getsockopt>.
2737
2738=item get_layers: unknown argument '%s'
2739
2740(F) You called PerlIO::get_layers() with an unknown argument. Legal
2741arguments are provided in key/value pairs, with the keys being one
2742of C<input>, C<output> or C<detail>, followed by a boolean.
2743
2744=item given is deprecated
2745
2746(D deprecated::smartmatch) C<given> depends on smartmatch, which is
2747deprecated. It will be removed in Perl 5.42. See the explanation under
2748L<perlsyn/Experimental Details on given and when>.
2749
2750=item Global symbol "%s" requires explicit package name (did you forget to
2751declare "my %s"?)
2752
2753(F) You've said "use strict" or "use strict vars", which indicates
2754that all variables must either be lexically scoped (using "my" or "state"),
2755declared beforehand using "our", or explicitly qualified to say
2756which package the global variable is in (using "::").
2757
2758=item glob failed (%s)
2759
2760(S glob) Something went wrong with the external program(s) used
2761for C<glob> and C<< <*.c> >>.  Usually, this means that you supplied a C<glob>
2762pattern that caused the external program to fail and exit with a
2763nonzero status.  If the message indicates that the abnormal exit
2764resulted in a coredump, this may also mean that your csh (C shell)
2765is broken.  If so, you should change all of the csh-related variables
2766in config.sh:  If you have tcsh, make the variables refer to it as
2767if it were csh (e.g. C<full_csh='/usr/bin/tcsh'>); otherwise, make them
2768all empty (except that C<d_csh> should be C<'undef'>) so that Perl will
2769think csh is missing.  In either case, after editing config.sh, run
2770C<./Configure -S> and rebuild Perl.
2771
2772=item Glob not terminated
2773
2774(F) The lexer saw a left angle bracket in a place where it was expecting
2775a term, so it's looking for the corresponding right angle bracket, and
2776not finding it.  Chances are you left some needed parentheses out
2777earlier in the line, and you really meant a "less than".
2778
2779=item gmtime(%f) failed
2780
2781(W overflow) You called C<gmtime> with a number that it could not handle:
2782too large, too small, or NaN.  The returned value is C<undef>.
2783
2784=item gmtime(%f) too large
2785
2786(W overflow) You called C<gmtime> with a number that was larger than
2787it can reliably handle and C<gmtime> probably returned the wrong
2788date.  This warning is also triggered with NaN (the special
2789not-a-number value).
2790
2791=item gmtime(%f) too small
2792
2793(W overflow) You called C<gmtime> with a number that was smaller than
2794it can reliably handle and C<gmtime> probably returned the wrong date.
2795
2796=item Got an error from DosAllocMem
2797
2798(P) An error peculiar to OS/2.  Most probably you're using an obsolete
2799version of Perl, and this should not happen anyway.
2800
2801=item goto must have label
2802
2803(F) Unlike with "next" or "last", you're not allowed to goto an
2804unspecified destination.  See L<perlfunc/goto>.
2805
2806=item Goto undefined subroutine%s
2807
2808(F) You tried to call a subroutine with C<goto &sub> syntax, but
2809the indicated subroutine hasn't been defined, or if it was, it
2810has since been undefined.
2811
2812=item Group name must start with a non-digit word character in regex; marked by
2813S<<-- HERE> in m/%s/
2814
2815(F) Group names must follow the rules for perl identifiers, meaning
2816they must start with a non-digit word character.  A common cause of
2817this error is using (?&0) instead of (?0).  See L<perlre>.
2818
2819=item ()-group starts with a count
2820
2821(F) A ()-group started with a count.  A count is supposed to follow
2822something: a template character or a ()-group.  See L<perlfunc/pack>.
2823
2824=item %s had compilation errors.
2825
2826(F) The final summary message when a C<perl -c> fails.
2827
2828=item Had to create %s unexpectedly
2829
2830(S internal) A routine asked for a symbol from a symbol table that ought
2831to have existed already, but for some reason it didn't, and had to be
2832created on an emergency basis to prevent a core dump.
2833
2834=item %s has too many errors
2835
2836(F) The parser has given up trying to parse the program after 10 errors.
2837Further error messages would likely be uninformative.
2838
2839=item Hexadecimal float: exponent overflow
2840
2841(W overflow) The hexadecimal floating point has a larger exponent
2842than the floating point supports.
2843
2844=item Hexadecimal float: exponent underflow
2845
2846(W overflow) The hexadecimal floating point has a smaller exponent
2847than the floating point supports.  With the IEEE 754 floating point,
2848this may also mean that the subnormals (formerly known as denormals)
2849are being used, which may or may not be an error.
2850
2851=item Hexadecimal float: internal error (%s)
2852
2853(F) Something went horribly bad in hexadecimal float handling.
2854
2855=item Hexadecimal float: mantissa overflow
2856
2857(W overflow) The hexadecimal floating point literal had more bits in
2858the mantissa (the part between the 0x and the exponent, also known as
2859the fraction or the significand) than the floating point supports.
2860
2861=item Hexadecimal float: precision loss
2862
2863(W overflow) The hexadecimal floating point had internally more
2864digits than could be output.  This can be caused by unsupported
2865long double formats, or by 64-bit integers not being available
2866(needed to retrieve the digits under some configurations).
2867
2868=item Hexadecimal float: unsupported long double format
2869
2870(F) You have configured Perl to use long doubles but
2871the internals of the long double format are unknown;
2872therefore the hexadecimal float output is impossible.
2873
2874=item Hexadecimal number > 0xffffffff non-portable
2875
2876(W portable) The hexadecimal number you specified is larger than 2**32-1
2877(4294967295) and therefore non-portable between systems.  See
2878L<perlport> for more on portability concerns.
2879
2880=item Identifier too long
2881
2882(F) Perl limits identifiers (names for variables, functions, etc.) to
2883about 250 characters for simple names, and somewhat more for compound
2884names (like C<$A::B>).  You've exceeded Perl's limits.  Future versions
2885of Perl are likely to eliminate these arbitrary limitations.
2886
2887=item Ignoring zero length \N{} in character class in regex; marked by
2888S<<-- HERE> in m/%s/
2889
2890(W regexp) Named Unicode character escapes (C<\N{...}>) may return a
2891zero-length sequence.  When such an escape is used in a character
2892class its behavior is not well defined.  Check that the correct
2893escape has been used, and the correct charname handler is in scope.
2894
2895=item Illegal %s digit '%c' ignored
2896
2897(W digit) Here C<%s> is one of "binary", "octal", or "hex".
2898You may have tried to use a digit other than one that is legal for the
2899given type, such as only 0 and 1 for binary.  For octals, this is raised
2900only if the illegal character is an '8' or '9'.  For hex, 'A' - 'F' and
2901'a' - 'f' are legal.
2902Interpretation of the number stopped just before the offending digit or
2903character.
2904
2905=item Illegal binary digit '%c'
2906
2907(F) You used a digit other than 0 or 1 in a binary number.
2908
2909=item Illegal character after '_' in prototype for %s : %s
2910
2911(W illegalproto) An illegal character was found in a prototype
2912declaration.  The '_' in a prototype must be followed by a ';',
2913indicating the rest of the parameters are optional, or one of '@'
2914or '%', since those two will accept 0 or more final parameters.
2915
2916=item Illegal character \%o (carriage return)
2917
2918(F) Perl normally treats carriage returns in the program text as
2919it would any other whitespace, which means you should never see
2920this error when Perl was built using standard options.  For some
2921reason, your version of Perl appears to have been built without
2922this support.  Talk to your Perl administrator.
2923
2924=item Illegal character following sigil in a subroutine signature
2925
2926(F) A parameter in a subroutine signature contained an unexpected character
2927following the C<$>, C<@> or C<%> sigil character.  Normally the sigil
2928should be followed by the variable name or C<=> etc.  Perhaps you are
2929trying use a prototype while in the scope of C<use feature 'signatures'>?
2930For example:
2931
2932    sub foo ($$) {}            # legal - a prototype
2933
2934    use feature 'signatures;
2935    sub foo ($$) {}            # illegal - was expecting a signature
2936    sub foo ($x, $y)
2937            :prototype($$) {}  # legal
2938
2939
2940=item Illegal character in prototype for %s : %s
2941
2942(W illegalproto) An illegal character was found in a prototype declaration.
2943Legal characters in prototypes are $, @, %, *, ;, [, ], &, \, and +.
2944Perhaps you were trying to write a subroutine signature but didn't enable
2945that feature first (C<use feature 'signatures'>), so your signature was
2946instead interpreted as a bad prototype.
2947
2948=item Illegal declaration of anonymous subroutine
2949
2950(F) When using the C<sub> keyword to construct an anonymous subroutine,
2951you must always specify a block of code.  See L<perlsub>.
2952
2953=item Illegal declaration of subroutine %s
2954
2955(F) A subroutine was not declared correctly.  See L<perlsub>.
2956
2957=item Illegal division by zero
2958
2959(F) You tried to divide a number by 0.  Either something was wrong in
2960your logic, or you need to put a conditional in to guard against
2961meaningless input.
2962
2963=item Illegal modulus zero
2964
2965(F) You tried to divide a number by 0 to get the remainder.  Most
2966numbers don't take to this kindly.
2967
2968=item Illegal number of bits in vec
2969
2970(F) The number of bits in vec() (the third argument) must be a power of
2971two from 1 to 32 (or 64, if your platform supports that).
2972
2973=item Illegal octal digit '%c'
2974
2975(F) You used an 8 or 9 in an octal number.
2976
2977=item Illegal operator following parameter in a subroutine signature
2978
2979(F) A parameter in a subroutine signature, was followed by something
2980other than C<=> introducing a default, C<,> or C<)>.
2981
2982    use feature 'signatures';
2983    sub foo ($=1) {}           # legal
2984    sub foo ($x = 1) {}        # legal
2985    sub foo ($x += 1) {}       # illegal
2986    sub foo ($x == 1) {}       # illegal
2987
2988=item Illegal pattern in regex; marked by S<<-- HERE> in m/%s/
2989
2990(F) You wrote something like
2991
2992 (?+foo)
2993
2994The C<"+"> is valid only when followed by digits, indicating a
2995capturing group.  See
2996L<C<(?I<PARNO>)>|perlre/(?PARNO) (?-PARNO) (?+PARNO) (?R) (?0)>.
2997
2998=item Illegal suidscript
2999
3000(F) The script run under suidperl was somehow illegal.
3001
3002=item Illegal switch in PERL5OPT: -%c
3003
3004(X) The PERL5OPT environment variable may only be used to set the
3005following switches: B<-[CDIMUdmtw]>.
3006
3007=item Illegal user-defined property name
3008
3009(F) You specified a Unicode-like property name in a regular expression
3010pattern (using C<\p{}> or C<\P{}>) that Perl knows isn't an official
3011Unicode property, and was likely meant to be a user-defined property
3012name, but it can't be one of those, as they must begin with either C<In>
3013or C<Is>.  Check the spelling.  See also
3014L</Can't find Unicode property definition "%s">.
3015
3016=item Ill-formed CRTL environ value "%s"
3017
3018(W internal) A warning peculiar to VMS.  Perl tried to read the CRTL's
3019internal environ array, and encountered an element without the C<=>
3020delimiter used to separate keys from values.  The element is ignored.
3021
3022=item Ill-formed message in prime_env_iter: |%s|
3023
3024(W internal) A warning peculiar to VMS.  Perl tried to read a logical
3025name or CLI symbol definition when preparing to iterate over %ENV, and
3026didn't see the expected delimiter between key and value, so the line was
3027ignored.
3028
3029=item (in cleanup) %s
3030
3031(W misc) This prefix usually indicates that a DESTROY() method raised
3032the indicated exception.  Since destructors are usually called by the
3033system at arbitrary points during execution, and often a vast number of
3034times, the warning is issued only once for any number of failures that
3035would otherwise result in the same message being repeated.
3036
3037Failure of user callbacks dispatched using the C<G_KEEPERR> flag could
3038also result in this warning.  See L<perlcall/G_KEEPERR>.
3039
3040=item Implicit use of @_ in %s with signatured subroutine is experimental
3041
3042(S experimental::args_array_with_signatures) An expression that implicitly
3043involves the C<@_> arguments array was found in a subroutine that uses a
3044signature.  This is experimental because the interaction between the
3045arguments array and parameter handling via signatures is not guaranteed
3046to remain stable in any future version of Perl, and such code should be
3047avoided.
3048
3049=item Incomplete expression within '(?[ ])' in regex; marked by S<<-- HERE>
3050in m/%s/
3051
3052(F) There was a syntax error within the C<(?[ ])>.  This can happen if the
3053expression inside the construct was completely empty, or if there are
3054too many or few operands for the number of operators.  Perl is not smart
3055enough to give you a more precise indication as to what is wrong.
3056
3057=item Inconsistent hierarchy during C3 merge of class '%s': merging failed on
3058parent '%s'
3059
3060(F) The method resolution order (MRO) of the given class is not
3061C3-consistent, and you have enabled the C3 MRO for this class.  See the C3
3062documentation in L<mro> for more information.
3063
3064=item Indentation on line %d of here-doc doesn't match delimiter
3065
3066(F) You have an indented here-document where one or more of its lines
3067have whitespace at the beginning that does not match the closing
3068delimiter.
3069
3070For example, line 2 below is wrong because it does not have at least
30712 spaces, but lines 1 and 3 are fine because they have at least 2:
3072
3073    if ($something) {
3074      print <<~EOF;
3075        Line 1
3076       Line 2 not
3077          Line 3
3078        EOF
3079    }
3080
3081Note that tabs and spaces are compared strictly, meaning 1 tab will
3082not match 8 spaces.
3083
3084=item Infinite recursion in regex
3085
3086(F) You used a pattern that references itself without consuming any input
3087text.  You should check the pattern to ensure that recursive patterns
3088either consume text or fail.
3089
3090=item Infinite recursion in user-defined property
3091
3092(F) A user-defined property (L<perlunicode/User-Defined Character
3093Properties>) can depend on the definitions of other user-defined
3094properties.  If the chain of dependencies leads back to this property,
3095infinite recursion would occur, were it not for the check that raised
3096this error.
3097
3098Restructure your property definitions to avoid this.
3099
3100=item Infinite recursion via empty pattern
3101
3102(F) You tried to use the empty pattern inside of a regex code block,
3103for instance C</(?{ s!!! })/>, which resulted in re-executing
3104the same pattern, which is an infinite loop which is broken by
3105throwing an exception.
3106
3107=item Initialization of state variables in list currently forbidden
3108
3109(F) C<state> only permits initializing a single variable, specified
3110without parentheses.  So C<state $x = 42> and C<state @x = qw(a b c)> are
3111allowed, but not C<state ($x) = 42> or C<(state $x) = 42>.  To initialize
3112more than one C<state> variable, initialize them one at a time.
3113
3114=item %%s[%s] in scalar context better written as $%s[%s]
3115
3116(W syntax) In scalar context, you've used an array index/value slice
3117(indicated by %) to select a single element of an array.  Generally
3118it's better to ask for a scalar value (indicated by $).  The difference
3119is that C<$foo[&bar]> always behaves like a scalar, both in the value it
3120returns and when evaluating its argument, while C<%foo[&bar]> provides
3121a list context to its subscript, which can do weird things if you're
3122expecting only one subscript.  When called in list context, it also
3123returns the index (what C<&bar> returns) in addition to the value.
3124
3125=item %%s{%s} in scalar context better written as $%s{%s}
3126
3127(W syntax) In scalar context, you've used a hash key/value slice
3128(indicated by %) to select a single element of a hash.  Generally it's
3129better to ask for a scalar value (indicated by $).  The difference
3130is that C<$foo{&bar}> always behaves like a scalar, both in the value
3131it returns and when evaluating its argument, while C<@foo{&bar}> and
3132provides a list context to its subscript, which can do weird things
3133if you're expecting only one subscript.  When called in list context,
3134it also returns the key in addition to the value.
3135
3136=item Insecure dependency in %s
3137
3138(F) You tried to do something that the tainting mechanism didn't like.
3139The tainting mechanism is turned on when you're running setuid or
3140setgid, or when you specify B<-T> to turn it on explicitly.  The
3141tainting mechanism labels all data that's derived directly or indirectly
3142from the user, who is considered to be unworthy of your trust.  If any
3143such data is used in a "dangerous" operation, you get this error.  See
3144L<perlsec> for more information.
3145
3146=item Insecure directory in %s
3147
3148(F) You can't use system(), exec(), or a piped open in a setuid or
3149setgid script if C<$ENV{PATH}> contains a directory that is writable by
3150the world.  Also, the PATH must not contain any relative directory.
3151See L<perlsec>.
3152
3153=item Insecure $ENV{%s} while running %s
3154
3155(F) You can't use system(), exec(), or a piped open in a setuid or
3156setgid script if any of C<$ENV{PATH}>, C<$ENV{IFS}>, C<$ENV{CDPATH}>,
3157C<$ENV{ENV}>, C<$ENV{BASH_ENV}> or C<$ENV{TERM}> are derived from data
3158supplied (or potentially supplied) by the user.  The script must set
3159the path to a known value, using trustworthy data.  See L<perlsec>.
3160
3161=item Insecure user-defined property %s
3162
3163(F) Perl detected tainted data when trying to compile a regular
3164expression that contains a call to a user-defined character property
3165function, i.e. C<\p{IsFoo}> or C<\p{InFoo}>.
3166See L<perlunicode/User-Defined Character Properties> and L<perlsec>.
3167
3168=item Integer overflow in format string for %s
3169
3170(F) The indexes and widths specified in the format string of C<printf()>
3171or C<sprintf()> are too large.  The numbers must not overflow the size of
3172integers for your architecture.
3173
3174=item Integer overflow in %s number
3175
3176(S overflow) The hexadecimal, octal or binary number you have specified
3177either as a literal or as an argument to hex() or oct() is too big for
3178your architecture, and has been converted to a floating point number.
3179On a 32-bit architecture the largest hexadecimal, octal or binary number
3180representable without overflow is 0xFFFFFFFF, 037777777777, or
31810b11111111111111111111111111111111 respectively.  Note that Perl
3182transparently promotes all numbers to a floating point representation
3183internally--subject to loss of precision errors in subsequent
3184operations.
3185
3186=item Integer overflow in srand
3187
3188(S overflow) The number you have passed to srand is too big to fit
3189in your architecture's integer representation.  The number has been
3190replaced with the largest integer supported (0xFFFFFFFF on 32-bit
3191architectures).  This means you may be getting less randomness than
3192you expect, because different random seeds above the maximum will
3193return the same sequence of random numbers.
3194
3195=item Integer overflow in version
3196
3197=item Integer overflow in version %d
3198
3199(W overflow) Some portion of a version initialization is too large for
3200the size of integers for your architecture.  This is not a warning
3201because there is no rational reason for a version to try and use an
3202element larger than typically 2**32.  This is usually caused by trying
3203to use some odd mathematical operation as a version, like 100/9.
3204
3205=item Internal disaster in regex; marked by S<<-- HERE> in m/%s/
3206
3207(P) Something went badly wrong in the regular expression parser.
3208The S<<-- HERE> shows whereabouts in the regular expression the problem was
3209discovered.
3210
3211=item Internal inconsistency in tracking vforks
3212
3213(S) A warning peculiar to VMS.  Perl keeps track of the number of times
3214you've called C<fork> and C<exec>, to determine whether the current call
3215to C<exec> should affect the current script or a subprocess (see
3216L<perlvms/"exec LIST">).  Somehow, this count has become scrambled, so
3217Perl is making a guess and treating this C<exec> as a request to
3218terminate the Perl script and execute the specified command.
3219
3220=item internal %<num>p might conflict with future printf extensions
3221
3222(S internal) Perl's internal routine that handles C<printf> and C<sprintf>
3223formatting follows a slightly different set of rules when called from
3224C or XS code.  Specifically, formats consisting of digits followed
3225by "p" (e.g., "%7p") are reserved for future use.  If you see this
3226message, then an XS module tried to call that routine with one such
3227reserved format.
3228
3229=item Internal urp in regex; marked by S<<-- HERE> in m/%s/
3230
3231(P) Something went badly awry in the regular expression parser.  The
3232S<<-- HERE> shows whereabouts in the regular expression the problem was
3233discovered.
3234
3235=item %s (...) interpreted as function
3236
3237(W syntax) You've run afoul of the rule that says that any list operator
3238followed by parentheses turns into a function, with all the list
3239operators arguments found inside the parentheses.  See
3240L<perlop/Terms and List Operators (Leftward)>.
3241
3242=item In '(?...)', the '(' and '?' must be adjacent in regex;
3243marked by S<<-- HERE> in m/%s/
3244
3245(F) The two-character sequence C<"(?"> in this context in a regular
3246expression pattern should be an indivisible token, with nothing
3247intervening between the C<"("> and the C<"?">, but you separated them
3248with whitespace.
3249
3250=item In '(*...)', the '(' and '*' must be adjacent in regex;
3251marked by S<<-- HERE> in m/%s/
3252
3253(F) The two-character sequence C<"(*"> in this context in a regular
3254expression pattern should be an indivisible token, with nothing
3255intervening between the C<"("> and the C<"*">, but you separated them.
3256Fix the pattern and retry.
3257
3258=item Invalid %s attribute: %s
3259
3260(F) The indicated attribute for a subroutine or variable was not recognized
3261by Perl or by a user-supplied handler.  See L<attributes>.
3262
3263=item Invalid %s attributes: %s
3264
3265(F) The indicated attributes for a subroutine or variable were not
3266recognized by Perl or by a user-supplied handler.  See L<attributes>.
3267
3268=item Invalid character in charnames alias definition; marked by
3269S<<-- HERE> in '%s
3270
3271(F) You tried to create a custom alias for a character name, with
3272the C<:alias> option to C<use charnames> and the specified character in
3273the indicated name isn't valid.  See L<charnames/CUSTOM ALIASES>.
3274
3275=item Invalid \0 character in %s for %s: %s\0%s
3276
3277(W syscalls) Embedded \0 characters in pathnames or other system call
3278arguments produce a warning as of 5.20.  The parts after the \0 were
3279formerly ignored by system calls.
3280
3281=item Invalid character in \N{...}; marked by S<<-- HERE> in \N{%s}
3282
3283(F) Only certain characters are valid for character names.  The
3284indicated one isn't.  See L<charnames/CUSTOM ALIASES>.
3285
3286=item Invalid conversion in %s: "%s"
3287
3288(W printf) Perl does not understand the given format conversion.  See
3289L<perlfunc/sprintf>.
3290
3291=item Invalid escape in the specified encoding in regex; marked by
3292S<<-- HERE> in m/%s/
3293
3294(W regexp)(F) The numeric escape (for example C<\xHH>) of value < 256
3295didn't correspond to a single character through the conversion
3296from the encoding specified by the encoding pragma.
3297The escape was replaced with REPLACEMENT CHARACTER (U+FFFD)
3298instead, except within S<C<(?[   ])>>, where it is a fatal error.
3299The S<<-- HERE> shows whereabouts in the regular expression the
3300escape was discovered.
3301
3302=item Invalid hexadecimal number in \N{U+...}
3303
3304=item Invalid hexadecimal number in \N{U+...} in regex; marked by
3305S<<-- HERE> in m/%s/
3306
3307(F) The character constant represented by C<...> is not a valid hexadecimal
3308number.  Either it is empty, or you tried to use a character other than
33090 - 9 or A - F, a - f in a hexadecimal number.
3310
3311=item Invalid module name %s with -%c option: contains single ':'
3312
3313(F) The module argument to perl's B<-m> and B<-M> command-line options
3314cannot contain single colons in the module name, but only in the
3315arguments after "=".  In other words, B<-MFoo::Bar=:baz> is ok, but
3316B<-MFoo:Bar=baz> is not.
3317
3318=item Invalid mro name: '%s'
3319
3320(F) You tried to C<mro::set_mro("classname", "foo")> or C<use mro 'foo'>,
3321where C<foo> is not a valid method resolution order (MRO).  Currently,
3322the only valid ones supported are C<dfs> and C<c3>, unless you have loaded
3323a module that is a MRO plugin.  See L<mro> and L<perlmroapi>.
3324
3325=item Invalid negative number (%s) in chr
3326
3327(W utf8) You passed a negative number to C<chr>.  Negative numbers are
3328not valid character numbers, so it returns the Unicode replacement
3329character (U+FFFD).
3330
3331=item Invalid number '%s' for -C option.
3332
3333(F) You supplied a number to the -C option that either has extra leading
3334zeroes or overflows perl's unsigned integer representation.
3335
3336=item invalid option -D%c, use -D'' to see choices
3337
3338(S debugging) Perl was called with invalid debugger flags.  Call perl
3339with the B<-D> option with no flags to see the list of acceptable values.
3340See also L<perlrun/-Dletters>.
3341
3342=item Invalid quantifier in {,} in regex; marked by S<<-- HERE> in m/%s/
3343
3344(F) The pattern looks like a {min,max} quantifier, but the min or max
3345could not be parsed as a valid number - either it has leading zeroes,
3346or it represents too big a number to cope with.  The S<<-- HERE> shows
3347where in the regular expression the problem was discovered.  See L<perlre>.
3348
3349=item Invalid [] range "%s" in regex; marked by S<<-- HERE> in m/%s/
3350
3351(F) The range specified in a character class had a minimum character
3352greater than the maximum character.  One possibility is that you forgot the
3353C<{}> from your ending C<\x{}> - C<\x> without the curly braces can go only
3354up to C<ff>.  The S<<-- HERE> shows whereabouts in the regular expression the
3355problem was discovered.  See L<perlre>.
3356
3357=item Invalid range "%s" in transliteration operator
3358
3359(F) The range specified in the tr/// or y/// operator had a minimum
3360character greater than the maximum character.  See L<perlop>.
3361
3362=item Invalid reference to group in regex; marked by S<<-- HERE> in m/%s/
3363
3364(F) The capture group you specified can't possibly exist because the
3365number you used is not within the legal range of possible values for
3366this machine.
3367
3368=item Invalid separator character %s in attribute list
3369
3370(F) Something other than a colon or whitespace was seen between the
3371elements of an attribute list.  If the previous attribute had a
3372parenthesised parameter list, perhaps that list was terminated too soon.
3373See L<attributes>.
3374
3375=item Invalid separator character %s in PerlIO layer specification %s
3376
3377(W layer) When pushing layers onto the Perl I/O system, something other
3378than a colon or whitespace was seen between the elements of a layer list.
3379If the previous attribute had a parenthesised parameter list, perhaps that
3380list was terminated too soon.
3381
3382=item Invalid strict version format (%s)
3383
3384(F) A version number did not meet the "strict" criteria for versions.
3385A "strict" version number is a positive decimal number (integer or
3386decimal-fraction) without exponentiation or else a dotted-decimal
3387v-string with a leading 'v' character and at least three components.
3388The parenthesized text indicates which criteria were not met.
3389See the L<version> module for more details on allowed version formats.
3390
3391=item Invalid type '%s' in %s
3392
3393(F) The given character is not a valid pack or unpack type.
3394See L<perlfunc/pack>.
3395
3396(W) The given character is not a valid pack or unpack type but used to be
3397silently ignored.
3398
3399=item Invalid version bundle "%s"
3400
3401(F) A version number that is used to specify an import bundle during a
3402C<use builtin ...> statement must be formatted as C<:MAJOR.MINOR> with an
3403optional third component, which is ignored.  Each component must be a number
3404of 1 to 3 digits. No other characters are permitted.  The value that was
3405specified does not conform to these rules.
3406
3407=item Invalid version format (%s)
3408
3409(F) A version number did not meet the "lax" criteria for versions.
3410A "lax" version number is a positive decimal number (integer or
3411decimal-fraction) without exponentiation or else a dotted-decimal
3412v-string.  If the v-string has fewer than three components, it
3413must have a leading 'v' character.  Otherwise, the leading 'v' is
3414optional.  Both decimal and dotted-decimal versions may have a
3415trailing "alpha" component separated by an underscore character
3416after a fractional or dotted-decimal component.  The parenthesized
3417text indicates which criteria were not met.  See the L<version> module
3418for more details on allowed version formats.
3419
3420=item Invalid version object
3421
3422(F) The internal structure of the version object was invalid.
3423Perhaps the internals were modified directly in some way or
3424an arbitrary reference was blessed into the "version" class.
3425
3426=item In '(*VERB...)', the '(' and '*' must be adjacent in regex;
3427marked by S<<-- HERE> in m/%s/
3428
3429=item Inverting a character class which contains a multi-character
3430sequence is illegal in regex; marked by <-- HERE in m/%s/
3431
3432(F) You wrote something like
3433
3434 qr/\P{name=KATAKANA LETTER AINU P}/
3435 qr/[^\p{name=KATAKANA LETTER AINU P}]/
3436
3437This name actually evaluates to a sequence of two Katakana characters,
3438not just a single one, and it is illegal to try to take the complement
3439of a sequence.  (Mathematically it would mean any sequence of characters
3440from 0 to infinity in length that weren't these two in a row, and that
3441is likely not of any real use.)
3442
3443(F) The two-character sequence C<"(*"> in this context in a regular
3444expression pattern should be an indivisible token, with nothing
3445intervening between the C<"("> and the C<"*">, but you separated them.
3446
3447=item ioctl is not implemented
3448
3449(F) Your machine apparently doesn't implement ioctl(), which is pretty
3450strange for a machine that supports C.
3451
3452=item ioctl() on unopened %s
3453
3454(W unopened) You tried ioctl() on a filehandle that was never opened.
3455Check your control flow and number of arguments.
3456
3457=item IO layers (like '%s') unavailable
3458
3459(F) Your Perl has not been configured to have PerlIO, and therefore
3460you cannot use IO layers.  To have PerlIO, Perl must be configured
3461with 'useperlio'.
3462
3463=item IO::Socket::atmark not implemented on this architecture
3464
3465(F) Your machine doesn't implement the sockatmark() functionality,
3466neither as a system call nor an ioctl call (SIOCATMARK).
3467
3468=item '%s' is an unknown bound type in regex; marked by S<<-- HERE> in m/%s/
3469
3470(F) You used C<\b{...}> or C<\B{...}> and the C<...> is not known to
3471Perl.  The current valid ones are given in
3472L<perlrebackslash/\b{}, \b, \B{}, \B>.
3473
3474=item %s() isn't allowed on :utf8 handles
3475
3476(F) The sysread(), recv(), syswrite() and send() operators are
3477not allowed on handles that have the C<:utf8> layer, either explicitly, or
3478implicitly, eg., with the C<:encoding(UTF-16LE)> layer.
3479
3480Previously sysread() and recv() currently use only the C<:utf8> flag for the stream,
3481ignoring the actual layers.  Since sysread() and recv() did no UTF-8
3482validation they can end up creating invalidly encoded scalars.
3483
3484Similarly, syswrite() and send() used only the C<:utf8> flag, otherwise ignoring
3485any layers.  If the flag is set, both wrote the value UTF-8 encoded, even if
3486the layer is some different encoding, such as the example above.
3487
3488Ideally, all of these operators would completely ignore the C<:utf8> state,
3489working only with bytes, but this would result in silently breaking existing
3490code.
3491
3492=item "%s" is more clearly written simply as "%s" in regex; marked by S<<-- HERE> in m/%s/
3493
3494(W regexp) (only under C<S<use re 'strict'>> or within C<(?[...])>)
3495
3496You specified a character that has the given plainer way of writing it, and
3497which is also portable to platforms running with different character sets.
3498
3499=item $* is no longer supported as of Perl 5.30
3500
3501(F) The special variable C<$*>, deprecated in older perls, was removed in
35025.10.0, is no longer supported and is a fatal error as of Perl 5.30.  In
3503previous versions of perl the use of C<$*> enabled or disabled multi-line
3504matching within a string.
3505
3506Instead of using C<$*> you should use the C</m> (and maybe C</s>) regexp
3507modifiers.  You can enable C</m> for a lexical scope (even a whole file)
3508with C<use re '/m'>.  (In older versions: when C<$*> was set to a true value
3509then all regular expressions behaved as if they were written using C</m>.)
3510
3511Use of this variable will be a fatal error in Perl 5.30.
3512
3513=item $# is no longer supported as of Perl 5.30
3514
3515(F) The special variable C<$#>, deprecated in older perls, was removed as of
35165.10.0, is no longer supported and is a fatal error as of Perl 5.30.  You
3517should use the printf/sprintf functions instead.
3518
3519=item '%s' is not a code reference
3520
3521(W overload) The second (fourth, sixth, ...) argument of
3522overload::constant needs to be a code reference.  Either
3523an anonymous subroutine, or a reference to a subroutine.
3524
3525=item '%s' is not an overloadable type
3526
3527(W overload) You tried to overload a constant type the overload package is
3528unaware of.
3529
3530=item '%s' is not recognised as a builtin function
3531
3532(F) An attempt was made to C<use> the L<builtin> pragma module to create
3533a lexical alias for an unknown function name.
3534
3535=item -i used with no filenames on the command line, reading from STDIN
3536
3537(S inplace) The C<-i> option was passed on the command line, indicating
3538that the script is intended to edit files in place, but no files were
3539given.  This is usually a mistake, since editing STDIN in place doesn't
3540make sense, and can be confusing because it can make perl look like
3541it is hanging when it is really just trying to read from STDIN.  You
3542should either pass a filename to edit, or remove C<-i> from the command
3543line.  See L<perlrun|perlrun/-i[extension]> for more details.
3544
3545=item Junk on end of regexp in regex m/%s/
3546
3547(P) The regular expression parser is confused.
3548
3549=item \K not permitted in lookahead/lookbehind in regex; marked by <-- HERE in m/%s/
3550
3551(F) Your regular expression used C<\K> in a lookahead or lookbehind
3552assertion, which currently isn't permitted.
3553
3554This may change in the future, see L<Support \K in
3555lookarounds|https://github.com/Perl/perl5/issues/18134>.
3556
3557=item Label not found for "last %s"
3558
3559(F) You named a loop to break out of, but you're not currently in a loop
3560of that name, not even if you count where you were called from.  See
3561L<perlfunc/last>.
3562
3563=item Label not found for "next %s"
3564
3565(F) You named a loop to continue, but you're not currently in a loop of
3566that name, not even if you count where you were called from.  See
3567L<perlfunc/last>.
3568
3569=item Label not found for "redo %s"
3570
3571(F) You named a loop to restart, but you're not currently in a loop of
3572that name, not even if you count where you were called from.  See
3573L<perlfunc/last>.
3574
3575=item leaving effective %s failed
3576
3577(F) While under the C<use filetest> pragma, switching the real and
3578effective uids or gids failed.
3579
3580=item length/code after end of string in unpack
3581
3582(F) While unpacking, the string buffer was already used up when an unpack
3583length/code combination tried to obtain more data.  This results in
3584an undefined value for the length.  See L<perlfunc/pack>.
3585
3586=item length() used on %s (did you mean "scalar(%s)"?)
3587
3588(W syntax) You used length() on either an array or a hash when you
3589probably wanted a count of the items.
3590
3591Array size can be obtained by doing:
3592
3593    scalar(@array);
3594
3595The number of items in a hash can be obtained by doing:
3596
3597    scalar(keys %hash);
3598
3599=item Lexing code attempted to stuff non-Latin-1 character into Latin-1 input
3600
3601(F) An extension is attempting to insert text into the current parse
3602(using L<lex_stuff_pvn|perlapi/lex_stuff_pvn> or similar), but tried to insert a character that
3603couldn't be part of the current input.  This is an inherent pitfall
3604of the stuffing mechanism, and one of the reasons to avoid it.  Where
3605it is necessary to stuff, stuffing only plain ASCII is recommended.
3606
3607=item Lexing code internal error (%s)
3608
3609(F) Lexing code supplied by an extension violated the lexer's API in a
3610detectable way.
3611
3612=item listen() on closed socket %s
3613
3614(W closed) You tried to do a listen on a closed socket.  Did you forget
3615to check the return value of your socket() call?  See
3616L<perlfunc/listen>.
3617
3618=item List form of piped open not implemented
3619
3620(F) On some platforms, notably Windows, the three-or-more-arguments
3621form of C<open> does not support pipes, such as C<open($pipe, '|-', @args)>.
3622Use the two-argument C<open($pipe, '|prog arg1 arg2...')> form instead.
3623
3624=item Literal vertical space in [] is illegal except under /x in regex;
3625marked by S<<-- HERE> in m/%s/
3626
3627(F) (only under C<S<use re 'strict'>> or within C<(?[...])>)
3628
3629Likely you forgot the C</x> modifier or there was a typo in the pattern.
3630For example, did you really mean to match a form-feed?  If so, all the
3631ASCII vertical space control characters are representable by escape
3632sequences which won't present such a jarring appearance as your pattern
3633does when displayed.
3634
3635  \r    carriage return
3636  \f    form feed
3637  \n    line feed
3638  \cK   vertical tab
3639
3640=item %s: loadable library and perl binaries are mismatched (got %s handshake key %p, needed %p)
3641
3642(P) A dynamic loading library C<.so> or C<.dll> was being loaded into the
3643process that was built against a different build of perl than the
3644said library was compiled against.  Reinstalling the XS module will
3645likely fix this error.
3646
3647=item Locale '%s' contains (at least) the following characters which
3648have unexpected meanings: %s  The Perl program will use the expected
3649meanings
3650
3651(W locale) You are using the named UTF-8 locale.  UTF-8 locales are
3652expected to have very particular behavior, which most do.  This message
3653arises when perl found some departures from the expectations, and is
3654notifying you that the expected behavior overrides these differences.
3655In some cases the differences are caused by the locale definition being
3656defective, but the most common causes of this warning are when there are
3657ambiguities and conflicts in following the Standard, and the locale has
3658chosen an approach that differs from Perl's.
3659
3660One of these is because that, contrary to the claims, Unicode is not
3661completely locale insensitive.  Turkish and some related languages
3662have two types of C<"I"> characters.  One is dotted in both upper- and
3663lowercase, and the other is dotless in both cases.  Unicode allows a
3664locale to use either the Turkish rules, or the rules used in all other
3665instances, where there is only one type of C<"I">, which is dotless in
3666the uppercase, and dotted in the lower.  The perl core does not (yet)
3667handle the Turkish case, and this message warns you of that.  Instead,
3668the L<Unicode::Casing> module allows you to mostly implement the Turkish
3669casing rules.
3670
3671The other common cause is for the characters
3672
3673 $ + < = > ^ ` | ~
3674
3675These are problematic.  The C standard says that these should be
3676considered punctuation in the C locale (and the POSIX standard defers to
3677the C standard), and Unicode is generally considered a superset of
3678the C locale.  But Unicode has added an extra category, "Symbol", and
3679classifies these particular characters as being symbols.  Most UTF-8
3680locales have them treated as punctuation, so that L<ispunct(3)> returns
3681non-zero for them.  But a few locales have it return 0.   Perl takes
3682the first approach, not using C<ispunct()> at all (see L<Note [5] in
3683perlrecharclass|perlrecharclass/[5]>), and this message is raised to notify you that you
3684are getting Perl's approach, not the locale's.
3685
3686=item Locale '%s' is unsupported, and may crash the interpreter
3687
3688(S locale) The named locale is not supported by Perl, and using it leads
3689to undefined behavior, including potentially crashing the computer.
3690
3691Currently the only locales that generate this severe warning are
3692non-UTF-8 ones which have characters that require more than one byte to
3693represent (common in older East Asian language locales).  See
3694L<perllocale>.
3695
3696=item Locale '%s' may not work well.%s
3697
3698(W locale) You are using the named locale, which is a non-UTF-8 one, and
3699which perl has determined is not fully compatible with what it can
3700handle.  The second C<%s> gives a reason.
3701
3702By far the most common reason is that the locale has characters in it
3703that are represented by more than one byte.  The only such locales that
3704Perl can handle are the UTF-8 locales.  Most likely the specified locale
3705is a non-UTF-8 one for an East Asian language such as Chinese or
3706Japanese.  If the locale is a superset of ASCII, the ASCII portion of it
3707may work in Perl.
3708
3709Some essentially obsolete locales that aren't supersets of ASCII, mainly
3710those in ISO 646 or other 7-bit locales, such as ASMO 449, can also have
3711problems, depending on what portions of the ASCII character set get
3712changed by the locale and are also used by the program.
3713The warning message lists the determinable conflicting characters.
3714
3715Note that not all incompatibilities are found.
3716
3717If this happens to you, there's not much you can do except switch to use a
3718different locale or use L<Encode> to translate from the locale into
3719UTF-8; if that's impracticable, you have been warned that some things
3720may break.
3721
3722This message is output once each time a bad locale is switched into
3723within the scope of C<S<use locale>>, or on the first possibly-affected
3724operation if the C<S<use locale>> inherits a bad one.  It is not raised
3725for any operations from the L<POSIX> module.
3726
3727=item localtime(%f) failed
3728
3729(W overflow) You called C<localtime> with a number that it could not handle:
3730too large, too small, or NaN.  The returned value is C<undef>.
3731
3732=item localtime(%f) too large
3733
3734(W overflow) You called C<localtime> with a number that was larger
3735than it can reliably handle and C<localtime> probably returned the
3736wrong date.  This warning is also triggered with NaN (the special
3737not-a-number value).
3738
3739=item localtime(%f) too small
3740
3741(W overflow) You called C<localtime> with a number that was smaller
3742than it can reliably handle and C<localtime> probably returned the
3743wrong date.
3744
3745=item Lookbehind longer than %d not implemented in regex m/%s/
3746
3747(F) There is currently a limit on the length of string which lookbehind can
3748handle.  This restriction may be eased in a future release.
3749
3750=item Lost precision when %s %f by 1
3751
3752(W imprecision) You attempted to increment or decrement a value by one,
3753but the result is too large for the underlying floating point
3754representation to store accurately. Hence, the target of C<++> or C<-->
3755is increased or decreased by quite different value than one, such as
3756zero (I<i.e.> the target is unchanged) or two, due to rounding.
3757Perl issues this
3758warning because it has already switched from integers to floating point
3759when values are too large for integers, and now even floating point is
3760insufficient.  You may wish to switch to using L<Math::BigInt> explicitly.
3761
3762=item lstat() on filehandle%s
3763
3764(W io) You tried to do an lstat on a filehandle.  What did you mean
3765by that?  lstat() makes sense only on filenames.  (Perl did a fstat()
3766instead on the filehandle.)
3767
3768=item lvalue attribute %s already-defined subroutine
3769
3770(W misc) Although L<attributes.pm|attributes> allows this, turning the lvalue
3771attribute on or off on a Perl subroutine that is already defined
3772does not always work properly.  It may or may not do what you
3773want, depending on what code is inside the subroutine, with exact
3774details subject to change between Perl versions.  Only do this
3775if you really know what you are doing.
3776
3777=item lvalue attribute ignored after the subroutine has been defined
3778
3779(W misc) Using the C<:lvalue> declarative syntax to make a Perl
3780subroutine an lvalue subroutine after it has been defined is
3781not permitted.  To make the subroutine an lvalue subroutine,
3782add the lvalue attribute to the definition, or put the C<sub
3783foo :lvalue;> declaration before the definition.
3784
3785See also L<attributes.pm|attributes>.
3786
3787=item Magical list constants are not supported
3788
3789(F) You assigned a magical array to a stash element, and then tried
3790to use the subroutine from the same slot.  You are asking Perl to do
3791something it cannot do, details subject to change between Perl versions.
3792
3793=item Malformed integer in [] in pack
3794
3795(F) Between the brackets enclosing a numeric repeat count only digits
3796are permitted.  See L<perlfunc/pack>.
3797
3798=item Malformed integer in [] in unpack
3799
3800(F) Between the brackets enclosing a numeric repeat count only digits
3801are permitted.  See L<perlfunc/pack>.
3802
3803=item Malformed PERLLIB_PREFIX
3804
3805(F) An error peculiar to OS/2.  PERLLIB_PREFIX should be of the form
3806
3807    prefix1;prefix2
3808
3809or
3810    prefix1 prefix2
3811
3812with nonempty prefix1 and prefix2.  If C<prefix1> is indeed a prefix of
3813a builtin library search path, prefix2 is substituted.  The error may
3814appear if components are not found, or are too long.  See
3815"PERLLIB_PREFIX" in L<perlos2>.
3816
3817=item Malformed prototype for %s: %s
3818
3819(F) You tried to use a function with a malformed prototype.  The
3820syntax of function prototypes is given a brief compile-time check for
3821obvious errors like invalid characters.  A more rigorous check is run
3822when the function is called.
3823Perhaps the function's author was trying to write a subroutine signature
3824but didn't enable that feature first (C<use feature 'signatures'>),
3825so the signature was instead interpreted as a bad prototype.
3826
3827=item Malformed UTF-8 character%s
3828
3829(S utf8)(F) Perl detected a string that should be UTF-8, but didn't
3830comply with UTF-8 encoding rules, or represents a code point whose
3831ordinal integer value doesn't fit into the word size of the current
3832platform (overflows).  Details as to the exact malformation are given in
3833the variable, C<%s>, part of the message.
3834
3835One possible cause is that you set the UTF8 flag yourself for data that
3836you thought to be in UTF-8 but it wasn't (it was for example legacy 8-bit
3837data).  To guard against this, you can use C<Encode::decode('UTF-8', ...)>.
3838
3839If you use the C<:encoding(UTF-8)> PerlIO layer for input, invalid byte
3840sequences are handled gracefully, but if you use C<:utf8>, the flag is set
3841without validating the data, possibly resulting in this error message.
3842
3843See also L<Encode/"Handling Malformed Data">.
3844
3845=item Malformed UTF-8 returned by \N{%s} immediately after '%s'
3846
3847(F) The charnames handler returned malformed UTF-8.
3848
3849=item Malformed UTF-8 string in "%s"
3850
3851(F) This message indicates a bug either in the Perl core or in XS
3852code. Such code was trying to find out if a character, allegedly
3853stored internally encoded as UTF-8, was of a given type, such as
3854being punctuation or a digit.  But the character was not encoded
3855in legal UTF-8.  The C<%s> is replaced by a string that can be used
3856by knowledgeable people to determine what the type being checked
3857against was.
3858
3859Passing malformed strings was deprecated in Perl 5.18, and
3860became fatal in Perl 5.26.
3861
3862=item Malformed UTF-8 string in '%c' format in unpack
3863
3864(F) You tried to unpack something that didn't comply with UTF-8 encoding
3865rules and perl was unable to guess how to make more progress.
3866
3867=item Malformed UTF-8 string in pack
3868
3869(F) You tried to pack something that didn't comply with UTF-8 encoding
3870rules and perl was unable to guess how to make more progress.
3871
3872=item Malformed UTF-8 string in unpack
3873
3874(F) You tried to unpack something that didn't comply with UTF-8 encoding
3875rules and perl was unable to guess how to make more progress.
3876
3877=item Malformed UTF-16 surrogate
3878
3879(F) Perl thought it was reading UTF-16 encoded character data but while
3880doing it Perl met a malformed Unicode surrogate.
3881
3882=item Mandatory parameter follows optional parameter
3883
3884(F) In a subroutine signature, you wrote something like "$x = undef,
3885$y", making an earlier parameter optional and a later one mandatory.
3886Parameters are filled from left to right, so it's impossible for the
3887caller to omit an earlier one and pass a later one.  If you want to act
3888as if the parameters are filled from right to left, declare the rightmost
3889optional and then shuffle the parameters around in the subroutine's body.
3890
3891=item Matched non-Unicode code point 0x%X against Unicode property; may
3892not be portable
3893
3894(S non_unicode) Perl allows strings to contain a superset of
3895Unicode code points; each code point may be as large as what is storable
3896in a signed integer on your system, but these may not be accepted by
3897other languages/systems.  This message occurs when you matched a string
3898containing such a code point against a regular expression pattern, and
3899the code point was matched against a Unicode property, C<\p{...}> or
3900C<\P{...}>.  Unicode properties are only defined on Unicode code points,
3901so the result of this match is undefined by Unicode, but Perl (starting
3902in v5.20) treats non-Unicode code points as if they were typical
3903unassigned Unicode ones, and matched this one accordingly.  Whether a
3904given property matches these code points or not is specified in
3905L<perluniprops/Properties accessible through \p{} and \P{}>.
3906
3907This message is suppressed (unless it has been made fatal) if it is
3908immaterial to the results of the match if the code point is Unicode or
3909not.  For example, the property C<\p{ASCII_Hex_Digit}> only can match
3910the 22 characters C<[0-9A-Fa-f]>, so obviously all other code points,
3911Unicode or not, won't match it.  (And C<\P{ASCII_Hex_Digit}> will match
3912every code point except these 22.)
3913
3914Getting this message indicates that the outcome of the match arguably
3915should have been the opposite of what actually happened.  If you think
3916that is the case, you may wish to make the C<non_unicode> warnings
3917category fatal; if you agree with Perl's decision, you may wish to turn
3918off this category.
3919
3920See L<perlunicode/Beyond Unicode code points> for more information.
3921
3922=item %s matches null string many times in regex; marked by S<<-- HERE> in
3923m/%s/
3924
3925(W regexp) The pattern you've specified would be an infinite loop if the
3926regular expression engine didn't specifically check for that.  The S<<-- HERE>
3927shows whereabouts in the regular expression the problem was discovered.
3928See L<perlre>.
3929
3930=item Maximal count of pending signals (%u) exceeded
3931
3932(F) Perl aborted due to too high a number of signals pending.  This
3933usually indicates that your operating system tried to deliver signals
3934too fast (with a very high priority), starving the perl process from
3935resources it would need to reach a point where it can process signals
3936safely.  (See L<perlipc/"Deferred Signals (Safe Signals)">.)
3937
3938=item "%s" may clash with future reserved word
3939
3940(W) This warning may be due to running a perl5 script through a perl4
3941interpreter, especially if the word that is being warned about is
3942"use" or "my".
3943
3944=item '%' may not be used in pack
3945
3946(F) You can't pack a string by supplying a checksum, because the
3947checksumming process loses information, and you can't go the other way.
3948See L<perlfunc/unpack>.
3949
3950=item Method for operation %s not found in package %s during blessing
3951
3952(F) An attempt was made to specify an entry in an overloading table that
3953doesn't resolve to a valid subroutine.  See L<overload>.
3954
3955=item method is experimental
3956
3957(S experimental::class) This warning is emitted if you use the C<method>
3958keyword of C<use feature 'class'>.  This keyword is currently
3959experimental and its behaviour may change in future releases of Perl.
3960
3961=item Method %s not permitted
3962
3963See L</500 Server error>.
3964
3965=item Method %s redefined
3966
3967(W redefine) You redefined a method.  To suppress this warning, say
3968
3969    {
3970	no warnings 'redefine';
3971	*name = method { ... };
3972    }
3973
3974=item Might be a runaway multi-line %s string starting on line %d
3975
3976(S) An advisory indicating that the previous error may have been caused
3977by a missing delimiter on a string or pattern, because it eventually
3978ended earlier on the current line.
3979
3980=item Mismatched brackets in template
3981
3982(F) A pack template could not be parsed because pairs of C<[...]> or
3983C<(...)> could not be matched up. See L<perlfunc/pack>.
3984
3985=item Misplaced _ in number
3986
3987(W syntax) An underscore (underbar) in a numeric constant did not
3988separate two digits.
3989
3990=item Missing argument for %n in %s
3991
3992(F) A C<%n> was used in a format string with no corresponding argument for
3993perl to write the current string length to.
3994
3995=item Missing argument in %s
3996
3997(W missing) You called a function with fewer arguments than other
3998arguments you supplied indicated would be needed.
3999
4000Currently only emitted when a printf-type format required more
4001arguments than were supplied, but might be used in the future for
4002other cases where we can statically determine that arguments to
4003functions are missing, e.g. for the L<perlfunc/pack> function.
4004
4005=item Missing argument to -%c
4006
4007(F) The argument to the indicated command line switch must follow
4008immediately after the switch, without intervening spaces.
4009
4010=item Missing braces on \N{}
4011
4012=item Missing braces on \N{} in regex; marked by S<<-- HERE> in m/%s/
4013
4014(F) Wrong syntax of character name literal C<\N{charname}> within
4015double-quotish context.  This can also happen when there is a space
4016(or comment) between the C<\N> and the C<{> in a regex with the C</x> modifier.
4017This modifier does not change the requirement that the brace immediately
4018follow the C<\N>.
4019
4020=item Missing braces on \o{}
4021
4022(F) A C<\o> must be followed immediately by a C<{> in double-quotish context.
4023
4024=item Missing comma after first argument to %s function
4025
4026(F) While certain functions allow you to specify a filehandle or an
4027"indirect object" before the argument list, this ain't one of them.
4028
4029=item Missing comma after first argument to return
4030
4031(F) While certain operators allow you to specify a filehandle or an
4032"indirect object" before the argument list, C<return> isn't one of
4033them.
4034
4035=item Missing command in piped open
4036
4037(W pipe) You used the C<open(FH, "| command")> or
4038C<open(FH, "command |")> construction, but the command was missing or
4039blank.
4040
4041=item Missing control char name in \c
4042
4043(F) A double-quoted string ended with "\c", without the required control
4044character name.
4045
4046=item Missing ']' in prototype for %s : %s
4047
4048(W illegalproto) A grouping was started with C<[> but never closed with C<]>.
4049
4050=item Missing name in "%s sub"
4051
4052(F) The syntax for lexically scoped subroutines requires that
4053they have a name with which they can be found.
4054
4055=item Missing $ on loop variable
4056
4057(F) Apparently you've been programming in B<csh> too much.  Variables
4058are always mentioned with the $ in Perl, unlike in the shells, where it
4059can vary from one line to the next.
4060
4061=item (Missing operator before %s?)
4062
4063(S syntax) This is an educated guess made in conjunction with the message
4064"%s found where operator expected".  Often the missing operator is a comma.
4065
4066=item Missing or undefined argument to %s
4067
4068(F) You tried to call C<require> or C<do> with no argument or with an
4069undefined value as an argument.  Require expects either a package name or
4070a file-specification as an argument; do expects a filename.  See
4071L<perlfunc/require EXPR> and L<perlfunc/do EXPR>.
4072
4073=item Missing or undefined argument to %s via %{^HOOK}{require__before}
4074
4075(F) A C<%{^HOOK}{require__before}> hook rewrote the name of the file being
4076compiled with C<require> or C<do> with an empty string an undefined value
4077which is forbidden.  See L<perlvar/%{^HOOK}> and L<perlfunc/require EXPR>.
4078
4079=item Missing right brace on \%c{} in regex; marked by S<<-- HERE> in m/%s/
4080
4081(F) Missing right brace in C<\x{...}>, C<\p{...}>, C<\P{...}>, or C<\N{...}>.
4082
4083=item Missing right brace on \N{}
4084
4085=item Missing right brace on \N{} or unescaped left brace after \N
4086
4087(F) C<\N> has two meanings.
4088
4089The traditional one has it followed by a name enclosed in braces,
4090meaning the character (or sequence of characters) given by that
4091name.  Thus C<\N{ASTERISK}> is another way of writing C<*>, valid in both
4092double-quoted strings and regular expression patterns.  In patterns,
4093it doesn't have the meaning an unescaped C<*> does.
4094
4095Starting in Perl 5.12.0, C<\N> also can have an additional meaning (only)
4096in patterns, namely to match a non-newline character.  (This is short
4097for C<[^\n]>, and like C<.> but is not affected by the C</s> regex modifier.)
4098
4099This can lead to some ambiguities.  When C<\N> is not followed immediately
4100by a left brace, Perl assumes the C<[^\n]> meaning.  Also, if the braces
4101form a valid quantifier such as C<\N{3}> or C<\N{5,}>, Perl assumes that this
4102means to match the given quantity of non-newlines (in these examples,
41033; and 5 or more, respectively).  In all other case, where there is a
4104C<\N{> and a matching C<}>, Perl assumes that a character name is desired.
4105
4106However, if there is no matching C<}>, Perl doesn't know if it was
4107mistakenly omitted, or if C<[^\n]{> was desired, and raises this error.
4108If you meant the former, add the right brace; if you meant the latter,
4109escape the brace with a backslash, like so: C<\N\{>
4110
4111=item Missing right curly or square bracket
4112
4113(F) The lexer counted more opening curly or square brackets than closing
4114ones.  As a general rule, you'll find it's missing near the place you
4115were last editing.
4116
4117=item (Missing semicolon on previous line?)
4118
4119(S syntax) This is an educated guess made in conjunction with the message
4120"%s found where operator expected".  Don't automatically put a semicolon on
4121the previous line just because you saw this message.
4122
4123=item Modification of a read-only value attempted
4124
4125(F) You tried, directly or indirectly, to change the value of a
4126constant.  You didn't, of course, try "2 = 1", because the compiler
4127catches that.  But an easy way to do the same thing is:
4128
4129    sub mod { $_[0] = 1 }
4130    mod(2);
4131
4132Another way is to assign to a substr() that's off the end of the string.
4133
4134Yet another way is to assign to a C<foreach> loop I<VAR> when I<VAR>
4135is aliased to a constant in the look I<LIST>:
4136
4137    $x = 1;
4138    foreach my $n ($x, 2) {
4139        $n *= 2; # modifies the $x, but fails on attempt to
4140    }            # modify the 2
4141
4142L<PerlIO::scalar> will also produce this message as a warning if you
4143attempt to open a read-only scalar for writing.
4144
4145=item Modification of non-creatable array value attempted, %s
4146
4147(F) You tried to make an array value spring into existence, and the
4148subscript was probably negative, even counting from end of the array
4149backwards.
4150
4151=item Modification of non-creatable hash value attempted, %s
4152
4153(P) You tried to make a hash value spring into existence, and it
4154couldn't be created for some peculiar reason.
4155
4156=item Module name must be constant
4157
4158(F) Only a bare module name is allowed as the first argument to a "use".
4159
4160=item Module name required with -%c option
4161
4162(F) The C<-M> or C<-m> options say that Perl should load some module, but
4163you omitted the name of the module.  Consult
4164L<perlrun|perlrun/-m[-]module> for full details about C<-M> and C<-m>.
4165
4166=item More than one argument to '%s' open
4167
4168(F) The C<open> function has been asked to open multiple files.  This
4169can happen if you are trying to open a pipe to a command that takes a
4170list of arguments, but have forgotten to specify a piped open mode.
4171See L<perlfunc/open> for details.
4172
4173=item mprotect for COW string %p %u failed with %d
4174
4175(S) You compiled perl with B<-D>PERL_DEBUG_READONLY_COW (see
4176L<perlguts/"Copy on Write">), but a shared string buffer
4177could not be made read-only.
4178
4179=item mprotect for %p %u failed with %d
4180
4181(S) You compiled perl with B<-D>PERL_DEBUG_READONLY_OPS (see L<perlhacktips>),
4182but an op tree could not be made read-only.
4183
4184=item mprotect RW for COW string %p %u failed with %d
4185
4186(S) You compiled perl with B<-D>PERL_DEBUG_READONLY_COW (see
4187L<perlguts/"Copy on Write">), but a read-only shared string
4188buffer could not be made mutable.
4189
4190=item mprotect RW for %p %u failed with %d
4191
4192(S) You compiled perl with B<-D>PERL_DEBUG_READONLY_OPS (see
4193L<perlhacktips>), but a read-only op tree could not be made
4194mutable before freeing the ops.
4195
4196=item msg%s not implemented
4197
4198(F) You don't have System V message IPC on your system.
4199
4200=item Multidimensional hash lookup is disabled
4201
4202(F) You supplied a list of subscripts to a hash lookup under
4203C<< no feature "multidimensional"; >>, eg:
4204
4205  $z = $foo{$x, $y};
4206
4207which by default acts like:
4208
4209  $z = $foo{join($;, $x, $y)};
4210
4211=item Multidimensional syntax %s not supported
4212
4213(W syntax) Multidimensional arrays aren't written like C<$foo[1,2,3]>.
4214They're written like C<$foo[1][2][3]>, as in C.
4215
4216=item Multiple slurpy parameters not allowed
4217
4218(F) In subroutine signatures, a slurpy parameter (C<@> or C<%>) must be
4219the last parameter, and there must not be more than one of them; for
4220example:
4221
4222    sub foo ($x, @y)    {} # legal
4223    sub foo ($x, @y, %) {} # invalid
4224
4225=item '/' must follow a numeric type in unpack
4226
4227(F) You had an unpack template that contained a '/', but this did not
4228follow some unpack specification producing a numeric value.
4229See L<perlfunc/pack>.
4230
4231=item %s must not be a named sequence in transliteration operator
4232
4233(F) Transliteration (C<tr///> and C<y///>) transliterates individual
4234characters.  But a named sequence by definition is more than an
4235individual character, and hence doing this operation on it doesn't make
4236sense.
4237
4238=item "my sub" not yet implemented
4239
4240(F) Lexically scoped subroutines are not yet implemented.  Don't try
4241that yet.
4242
4243=item "my" subroutine %s can't be in a package
4244
4245(F) Lexically scoped subroutines aren't in a package, so it doesn't make
4246sense to try to declare one with a package qualifier on the front.
4247
4248=item "my %s" used in sort comparison
4249
4250(W syntax) The package variables $a and $b are used for sort comparisons.
4251You used $a or $b in as an operand to the C<< <=> >> or C<cmp> operator inside a
4252sort comparison block, and the variable had earlier been declared as a
4253lexical variable.  Either qualify the sort variable with the package
4254name, or rename the lexical variable.
4255
4256=item "my" variable %s can't be in a package
4257
4258(F) Lexically scoped variables aren't in a package, so it doesn't make
4259sense to try to declare one with a package qualifier on the front.  Use
4260local() if you want to localize a package variable.
4261
4262=item Name "%s::%s" used only once: possible typo
4263
4264(W once) Typographical errors often show up as unique variable
4265names.  If you had a good reason for having a unique name, then
4266just mention it again somehow to suppress the message.  The C<our>
4267declaration is also provided for this purpose.
4268
4269NOTE: This warning detects package symbols that have been used
4270only once.  This means lexical variables will never trigger this
4271warning.  It also means that all of the package variables $c, @c,
4272%c, as well as *c, &c, sub c{}, c(), and c (the filehandle or
4273format) are considered the same; if a program uses $c only once
4274but also uses any of the others it will not trigger this warning.
4275Symbols beginning with an underscore and symbols using special
4276identifiers (q.v. L<perldata>) are exempt from this warning.
4277
4278=item Need exactly 3 octal digits in regex; marked by S<<-- HERE> in m/%s/
4279
4280(F) Within S<C<(?[   ])>>, all constants interpreted as octal need to be
4281exactly 3 digits long.  This helps catch some ambiguities.  If your
4282constant is too short, add leading zeros, like
4283
4284 (?[ [ \078 ] ])     # Syntax error!
4285 (?[ [ \0078 ] ])    # Works
4286 (?[ [ \007 8 ] ])   # Clearer
4287
4288The maximum number this construct can express is C<\777>.  If you
4289need a larger one, you need to use L<\o{}|perlrebackslash/Octal escapes> instead.  If you meant
4290two separate things, you need to separate them:
4291
4292 (?[ [ \7776 ] ])        # Syntax error!
4293 (?[ [ \o{7776} ] ])     # One meaning
4294 (?[ [ \777 6 ] ])       # Another meaning
4295 (?[ [ \777 \006 ] ])    # Still another
4296
4297=item Negative '/' count in unpack
4298
4299(F) The length count obtained from a length/code unpack operation was
4300negative.  See L<perlfunc/pack>.
4301
4302=item Negative length
4303
4304(F) You tried to do a read/write/send/recv operation with a buffer
4305length that is less than 0.  This is difficult to imagine.
4306
4307=item Negative offset to vec in lvalue context
4308
4309(F) When C<vec> is called in an lvalue context, the second argument must be
4310greater than or equal to zero.
4311
4312=item Negative repeat count does nothing
4313
4314(W numeric) You tried to execute the
4315L<C<x>|perlop/Multiplicative Operators> repetition operator fewer than 0
4316times, which doesn't make sense.
4317
4318=item Nested quantifiers in regex; marked by S<<-- HERE> in m/%s/
4319
4320(F) You can't quantify a quantifier without intervening parentheses.
4321So things like ** or +* or ?* are illegal.  The S<<-- HERE> shows
4322whereabouts in the regular expression the problem was discovered.
4323
4324Note that the minimal matching quantifiers, C<*?>, C<+?>, and
4325C<??> appear to be nested quantifiers, but aren't.  See L<perlre>.
4326
4327=item %s never introduced
4328
4329(S internal) The symbol in question was declared but somehow went out of
4330scope before it could possibly have been used.
4331
4332=item next::method/next::can/maybe::next::method cannot find enclosing method
4333
4334(F) C<next::method> needs to be called within the context of a
4335real method in a real package, and it could not find such a context.
4336See L<mro>.
4337
4338=item \N in a character class must be a named character: \N{...} in regex;
4339marked by S<<-- HERE> in m/%s/
4340
4341(F) The new (as of Perl 5.12) meaning of C<\N> as C<[^\n]> is not valid in a
4342bracketed character class, for the same reason that C<.> in a character
4343class loses its specialness: it matches almost everything, which is
4344probably not what you want.
4345
4346=item \N{} here is restricted to one character in regex; marked by <-- HERE in m/%s/
4347
4348(F) Named Unicode character escapes (C<\N{...}>) may return a
4349multi-character sequence.  Even though a character class is
4350supposed to match just one character of input, perl will match the
4351whole thing correctly, except under certain conditions.  These currently
4352are
4353
4354=over 4
4355
4356=item When the class is inverted (C<[^...]>)
4357
4358The mathematically logical behavior for what matches when inverting
4359is very different from what people expect, so we have decided to
4360forbid it.
4361
4362=item The escape is the beginning or final end point of a range
4363
4364Similarly unclear is what should be generated when the
4365C<\N{...}> is used as one of the end points of the range, such as in
4366
4367 [\x{41}-\N{ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH AE}]
4368
4369What is meant here is unclear, as the C<\N{...}> escape is a sequence
4370of code points, so this is made an error.
4371
4372=item In a regex set
4373
4374The syntax S<C<(?[   ])>> in a regular expression yields a list of
4375single code points, none can be a sequence.
4376
4377=back
4378
4379=item No %s allowed while running setuid
4380
4381(F) Certain operations are deemed to be too insecure for a setuid or
4382setgid script to even be allowed to attempt.  Generally speaking there
4383will be another way to do what you want that is, if not secure, at least
4384securable.  See L<perlsec>.
4385
4386=item No code specified for -%c
4387
4388(F) Perl's B<-e> and B<-E> command-line options require an argument.  If
4389you want to run an empty program, pass the empty string as a separate
4390argument or run a program consisting of a single 0 or 1:
4391
4392    perl -e ""
4393    perl -e0
4394    perl -e1
4395
4396=item No comma allowed after %s
4397
4398(F) A list operator that has a filehandle or "indirect object" is
4399not allowed to have a comma between that and the following arguments.
4400Otherwise it'd be just another one of the arguments.
4401
4402One possible cause for this is that you expected to have imported
4403a constant to your name space with B<use> or B<import> while no such
4404importing took place, it may for example be that your operating
4405system does not support that particular constant.  Hopefully you did
4406use an explicit import list for the constants you expect to see;
4407please see L<perlfunc/use> and L<perlfunc/import>.  While an
4408explicit import list would probably have caught this error earlier
4409it naturally does not remedy the fact that your operating system
4410still does not support that constant.  Maybe you have a typo in
4411the constants of the symbol import list of B<use> or B<import> or in the
4412constant name at the line where this error was triggered?
4413
4414=item No command into which to pipe on command line
4415
4416(F) An error peculiar to VMS.  Perl handles its own command line
4417redirection, and found a '|' at the end of the command line, so it
4418doesn't know where you want to pipe the output from this command.
4419
4420=item No DB::DB routine defined
4421
4422(F) The currently executing code was compiled with the B<-d> switch, but
4423for some reason the current debugger (e.g. F<perl5db.pl> or a C<Devel::>
4424module) didn't define a routine to be called at the beginning of each
4425statement.
4426
4427=item No dbm on this machine
4428
4429(P) This is counted as an internal error, because every machine should
4430supply dbm nowadays, because Perl comes with SDBM.  See L<SDBM_File>.
4431
4432=item No DB::sub routine defined
4433
4434(F) The currently executing code was compiled with the B<-d> switch, but
4435for some reason the current debugger (e.g. F<perl5db.pl> or a C<Devel::>
4436module) didn't define a C<DB::sub> routine to be called at the beginning
4437of each ordinary subroutine call.
4438
4439=item No digits found for %s literal
4440
4441(F) No hexadecimal digits were found following C<0x> or no binary digits
4442were found following C<0b>.
4443
4444=item No directory specified for -I
4445
4446(F) The B<-I> command-line switch requires a directory name as part of the
4447I<same> argument.  Use B<-Ilib>, for instance.  B<-I lib> won't work.
4448
4449=item No error file after 2> or 2>> on command line
4450
4451(F) An error peculiar to VMS.  Perl handles its own command line
4452redirection, and found a '2>' or a '2>>' on the command line, but can't
4453find the name of the file to which to write data destined for stderr.
4454
4455=item No group ending character '%c' found in template
4456
4457(F) A pack or unpack template has an opening '(' or '[' without its
4458matching counterpart.  See L<perlfunc/pack>.
4459
4460=item No input file after < on command line
4461
4462(F) An error peculiar to VMS.  Perl handles its own command line
4463redirection, and found a '<' on the command line, but can't find the
4464name of the file from which to read data for stdin.
4465
4466=item No next::method '%s' found for %s
4467
4468(F) C<next::method> found no further instances of this method name
4469in the remaining packages of the MRO of this class.  If you don't want
4470it throwing an exception, use C<maybe::next::method>
4471or C<next::can>.  See L<mro>.
4472
4473=item Non-finite repeat count does nothing
4474
4475(W numeric) You tried to execute the
4476L<C<x>|perlop/Multiplicative Operators> repetition operator C<Inf> (or
4477C<-Inf>) or C<NaN> times, which doesn't make sense.
4478
4479=item Non-hex character in regex; marked by S<<-- HERE> in m/%s/
4480
4481(F) In a regular expression, there was a non-hexadecimal character where
4482a hex one was expected, like
4483
4484 (?[ [ \xDG ] ])
4485 (?[ [ \x{DEKA} ] ])
4486
4487=item Non-hex character '%c' terminates \x early.  Resolved as "%s"
4488
4489(W digit) In parsing a hexadecimal numeric constant, a character was
4490unexpectedly encountered that isn't hexadecimal.  The resulting value
4491is as indicated.
4492
4493Note that, within braces, every character starting with the first
4494non-hexadecimal up to the ending brace is ignored.
4495
4496=item Non-octal character in regex; marked by S<<-- HERE> in m/%s/
4497
4498(F) In a regular expression, there was a non-octal character where
4499an octal one was expected, like
4500
4501 (?[ [ \o{1278} ] ])
4502
4503=item Non-octal character '%c' terminates \o early.  Resolved as "%s"
4504
4505(W digit) In parsing an octal numeric constant, a character was
4506unexpectedly encountered that isn't octal.  The resulting value
4507is as indicated.
4508
4509When not using C<\o{...}>, you wrote something like C<\08>, or C<\179>
4510in a double-quotish string.  The resolution is as indicated, with all
4511but the last digit treated as a single character, specified in octal.
4512The last digit is the next character in the string.  To tell Perl that
4513this is indeed what you want, you can use the C<\o{ }> syntax, or use
4514exactly three digits to specify the octal for the character.
4515
4516Note that, within braces, every character starting with the first
4517non-octal up to the ending brace is ignored.
4518
4519=item "no" not allowed in expression
4520
4521(F) The "no" keyword is recognized and executed at compile time, and
4522returns no useful value.  See L<perlmod>.
4523
4524=item Non-string passed as bitmask
4525
4526(W misc) A number has been passed as a bitmask argument to select().
4527Use the vec() function to construct the file descriptor bitmasks for
4528select.  See L<perlfunc/select>.
4529
4530=item No output file after > on command line
4531
4532(F) An error peculiar to VMS.  Perl handles its own command line
4533redirection, and found a lone '>' at the end of the command line, so it
4534doesn't know where you wanted to redirect stdout.
4535
4536=item No output file after > or >> on command line
4537
4538(F) An error peculiar to VMS.  Perl handles its own command line
4539redirection, and found a '>' or a '>>' on the command line, but can't
4540find the name of the file to which to write data destined for stdout.
4541
4542=item No package name allowed for subroutine %s in "our"
4543
4544=item No package name allowed for variable %s in "our"
4545
4546(F) Fully qualified subroutine and variable names are not allowed in "our"
4547declarations, because that doesn't make much sense under existing rules.
4548Such syntax is reserved for future extensions.
4549
4550=item No Perl script found in input
4551
4552(F) You called C<perl -x>, but no line was found in the file beginning
4553with #! and containing the word "perl".
4554
4555=item No setregid available
4556
4557(F) Configure didn't find anything resembling the setregid() call for
4558your system.
4559
4560=item No setreuid available
4561
4562(F) Configure didn't find anything resembling the setreuid() call for
4563your system.
4564
4565=item No such class %s
4566
4567(F) You provided a class qualifier in a "my", "our" or "state"
4568declaration, but this class doesn't exist at this point in your program.
4569
4570=item No such class field "%s" in variable %s of type %s
4571
4572(F) You tried to access a key from a hash through the indicated typed
4573variable but that key is not allowed by the package of the same type.
4574The indicated package has restricted the set of allowed keys using the
4575L<fields> pragma.
4576
4577=item No such hook: %s
4578
4579(F) You specified a signal hook that was not recognized by Perl.
4580Currently, Perl accepts C<__DIE__> and C<__WARN__> as valid signal hooks.
4581
4582=item No such pipe open
4583
4584(P) An error peculiar to VMS.  The internal routine my_pclose() tried to
4585close a pipe which hadn't been opened.  This should have been caught
4586earlier as an attempt to close an unopened filehandle.
4587
4588=item No such signal: SIG%s
4589
4590(W signal) You specified a signal name as a subscript to %SIG that was
4591not recognized.  Say C<kill -l> in your shell to see the valid signal
4592names on your system.
4593
4594=item No Unicode property value wildcard matches:
4595
4596(W regexp) You specified a wildcard for a Unicode property value, but
4597there is no property value in the current Unicode release that matches
4598it.  Check your spelling.
4599
4600=item Not a CODE reference
4601
4602(F) Perl was trying to evaluate a reference to a code value (that is, a
4603subroutine), but found a reference to something else instead.  You can
4604use the ref() function to find out what kind of ref it really was.  See
4605also L<perlref>.
4606
4607=item Not a GLOB reference
4608
4609(F) Perl was trying to evaluate a reference to a "typeglob" (that is, a
4610symbol table entry that looks like C<*foo>), but found a reference to
4611something else instead.  You can use the ref() function to find out what
4612kind of ref it really was.  See L<perlref>.
4613
4614=item Not a HASH reference
4615
4616(F) Perl was trying to evaluate a reference to a hash value, but found a
4617reference to something else instead.  You can use the ref() function to
4618find out what kind of ref it really was.  See L<perlref>.
4619
4620=item '#' not allowed immediately following a sigil in a subroutine signature
4621
4622(F) In a subroutine signature definition, a comment following a sigil
4623(C<$>, C<@> or C<%>), needs to be separated by whitespace or a comma etc., in
4624particular to avoid confusion with the C<$#> variable.  For example:
4625
4626    # bad
4627    sub f ($# ignore first arg
4628           , $y) {}
4629    # good
4630    sub f ($, # ignore first arg
4631           $y) {}
4632
4633=item Not an ARRAY reference
4634
4635(F) Perl was trying to evaluate a reference to an array value, but found
4636a reference to something else instead.  You can use the ref() function
4637to find out what kind of ref it really was.  See L<perlref>.
4638
4639=item Not a SCALAR reference
4640
4641(F) Perl was trying to evaluate a reference to a scalar value, but found
4642a reference to something else instead.  You can use the ref() function
4643to find out what kind of ref it really was.  See L<perlref>.
4644
4645=item Not a subroutine reference
4646
4647(F) Perl was trying to evaluate a reference to a code value (that is, a
4648subroutine), but found a reference to something else instead.  You can
4649use the ref() function to find out what kind of ref it really was.  See
4650also L<perlref>.
4651
4652=item Not a subroutine reference in overload table
4653
4654(F) An attempt was made to specify an entry in an overloading table that
4655doesn't somehow point to a valid subroutine.  See L<overload>.
4656
4657=item Not enough arguments for %s
4658
4659(F) The function requires more arguments than you specified.
4660
4661=item Not enough format arguments
4662
4663(W syntax) A format specified more picture fields than the next line
4664supplied.  See L<perlform>.
4665
4666=item %s: not found
4667
4668(A) You've accidentally run your script through the Bourne shell instead
4669of Perl.  Check the #! line, or manually feed your script into Perl
4670yourself.
4671
4672=item no UTC offset information; assuming local time is UTC
4673
4674(S) A warning peculiar to VMS.  Perl was unable to find the local
4675timezone offset, so it's assuming that local system time is equivalent
4676to UTC.  If it's not, define the logical name
4677F<SYS$TIMEZONE_DIFFERENTIAL> to translate to the number of seconds which
4678need to be added to UTC to get local time.
4679
4680=item NULL OP IN RUN
4681
4682(S debugging) Some internal routine called run() with a null opcode
4683pointer.
4684
4685=item Null picture in formline
4686
4687(F) The first argument to formline must be a valid format picture
4688specification.  It was found to be empty, which probably means you
4689supplied it an uninitialized value.  See L<perlform>.
4690
4691=item NULL regexp parameter
4692
4693(P) The internal pattern matching routines are out of their gourd.
4694
4695=item Number too long
4696
4697(F) Perl limits the representation of decimal numbers in programs to
4698about 250 characters.  You've exceeded that length.  Future
4699versions of Perl are likely to eliminate this arbitrary limitation.  In
4700the meantime, try using scientific notation (e.g. "1e6" instead of
4701"1_000_000").
4702
4703=item Number with no digits
4704
4705(F) Perl was looking for a number but found nothing that looked like
4706a number.  This happens, for example with C<\o{}>, with no number between
4707the braces.
4708
4709=item Numeric format result too large
4710
4711(F) The length of the result of a numeric format supplied to sprintf()
4712or printf() would have been too large for the underlying C function to
4713report.  This limit is typically 2GB.
4714
4715=item Numeric variables with more than one digit may not start with '0'
4716
4717(F) The only numeric variable which is allowed to start with a 0 is C<$0>,
4718and you mentioned a variable that starts with 0 that has more than one
4719digit. You probably want to remove the leading 0, or if the intent was
4720to express a variable name in octal you should convert to decimal.
4721
4722=item Octal number > 037777777777 non-portable
4723
4724(W portable) The octal number you specified is larger than 2**32-1
4725(4294967295) and therefore non-portable between systems.  See
4726L<perlport> for more on portability concerns.
4727
4728=item Odd name/value argument for subroutine '%s'
4729
4730(F) A subroutine using a slurpy hash parameter in its signature
4731received an odd number of arguments to populate the hash.  It requires
4732the arguments to be paired, with the same number of keys as values.
4733The caller of the subroutine is presumably at fault.
4734
4735The message attempts to include the name of the called subroutine. If the
4736subroutine has been aliased, the subroutine's original name will be shown,
4737regardless of what name the caller used.
4738
4739=item Odd number of arguments for overload::constant
4740
4741(W overload) The call to overload::constant contained an odd number of
4742arguments.  The arguments should come in pairs.
4743
4744=item Odd number of arguments passed to "%s" constructor
4745
4746(S) The constructor for the given class was called with an odd
4747number of arguments.
4748
4749Class constructors accept named arguments as a list and expect pairs
4750of name followed by value as if you were initialising a hash.
4751
4752=item Odd number of elements in anonymous hash
4753
4754(W misc) You specified an odd number of elements to initialize a hash,
4755which is odd, because hashes come in key/value pairs.
4756
4757=item Odd number of elements in export_lexically
4758
4759(F) A call to L<builtin/export_lexically> contained an odd number of
4760arguments.  This is not permitted, because each name must be paired with a
4761valid reference value.
4762
4763=item Odd number of elements in hash assignment
4764
4765(W misc) You specified an odd number of elements to initialize a hash,
4766which is odd, because hashes come in key/value pairs.
4767
4768=item Odd number of elements in hash field initialization
4769
4770(W misc) You specified an odd number of elements to initialise a hash
4771field of an object.  Hashes are initialised from a list of key/value
4772pairs so there must be a corresponding value to every key.  The final
4773missing value will be filled in with undef instead.
4774
4775=item Offset outside string
4776
4777(W layer) You tried to do a read/write/send/recv/seek operation
4778with an offset pointing outside the buffer.  This is difficult to
4779imagine.  The sole exceptions to this are that zero padding will
4780take place when going past the end of the string when either
4781C<sysread()>ing a file, or when seeking past the end of a scalar opened
4782for I/O (in anticipation of future reads and to imitate the behavior
4783with real files).
4784
4785=item Old package separator "'" deprecated
4786
4787(D deprecated::apostrophe_as_package_separator, syntax) You used the old package
4788separator "'" in a variable, subroutine or package name. Support for the
4789old package separator will be removed in Perl 5.42.
4790
4791=item Old package separator used in string
4792
4793(D deprecated::apostrophe_as_package_separator, syntax) You used the old package
4794separator, "'", in a variable named inside a double-quoted string; e.g.,
4795C<"In $name's house">. This is equivalent to C<"In $name::s house">. If
4796you meant the former, put a backslash before the apostrophe
4797(C<"In $name\'s house">).
4798
4799Support for the old package separator will be removed in Perl 5.42.
4800
4801=item Only scalar fields can take a :param attribute
4802
4803(F) You tried to apply the C<:param> attribute to an array or hash field.
4804Currently this is not permitted.
4805
4806=item %s() on unopened %s
4807
4808(W unopened) An I/O operation was attempted on a filehandle that was
4809never initialized.  You need to do an open(), a sysopen(), or a socket()
4810call, or call a constructor from the FileHandle package.
4811
4812=item -%s on unopened filehandle %s
4813
4814(W unopened) You tried to invoke a file test operator on a filehandle
4815that isn't open.  Check your control flow.  See also L<perlfunc/-X>.
4816
4817=item oops: oopsAV
4818
4819(S internal) An internal warning that the grammar is screwed up.
4820
4821=item oops: oopsHV
4822
4823(S internal) An internal warning that the grammar is screwed up.
4824
4825=item Operand with no preceding operator in regex; marked by S<<-- HERE> in
4826m/%s/
4827
4828(F) You wrote something like
4829
4830 (?[ \p{Digit} \p{Thai} ])
4831
4832There are two operands, but no operator giving how you want to combine
4833them.
4834
4835=item Operation "%s": no method found, %s
4836
4837(F) An attempt was made to perform an overloaded operation for which no
4838handler was defined.  While some handlers can be autogenerated in terms
4839of other handlers, there is no default handler for any operation, unless
4840the C<fallback> overloading key is specified to be true.  See L<overload>.
4841
4842=item Operation "%s" returns its argument for non-Unicode code point 0x%X
4843
4844(S non_unicode) You performed an operation requiring Unicode rules
4845on a code point that is not in Unicode, so what it should do is not
4846defined.  Perl has chosen to have it do nothing, and warn you.
4847
4848If the operation shown is "ToFold", it means that case-insensitive
4849matching in a regular expression was done on the code point.
4850
4851If you know what you are doing you can turn off this warning by
4852C<no warnings 'non_unicode';>.
4853
4854=item Operation "%s" returns its argument for UTF-16 surrogate U+%X
4855
4856(S surrogate) You performed an operation requiring Unicode
4857rules on a Unicode surrogate.  Unicode frowns upon the use
4858of surrogates for anything but storing strings in UTF-16, but
4859rules are (reluctantly) defined for the surrogates, and
4860they are to do nothing for this operation.  Because the use of
4861surrogates can be dangerous, Perl warns.
4862
4863If the operation shown is "ToFold", it means that case-insensitive
4864matching in a regular expression was done on the code point.
4865
4866If you know what you are doing you can turn off this warning by
4867C<no warnings 'surrogate';>.
4868
4869=item Operator or semicolon missing before %s
4870
4871(S ambiguous) You used a variable or subroutine call where the parser
4872was expecting an operator.  The parser has assumed you really meant to
4873use an operator, but this is highly likely to be incorrect.  For
4874example, if you say "*foo *foo" it will be interpreted as if you said
4875"*foo * 'foo'".
4876
4877=item Optional parameter lacks default expression
4878
4879(F) In a subroutine signature, you wrote something like "$x =", making a
4880named optional parameter without a default value.  A nameless optional
4881parameter is permitted to have no default value, but a named one must
4882have a specific default.  You probably want "$x = undef".
4883
4884=item "our" variable %s redeclared
4885
4886(W shadow) You seem to have already declared the same global once before
4887in the current lexical scope.
4888
4889=item Out of memory!
4890
4891(X) The malloc() function returned 0, indicating there was insufficient
4892remaining memory (or virtual memory) to satisfy the request.  Perl has
4893no option but to exit immediately.
4894
4895At least in Unix you may be able to get past this by increasing your
4896process datasize limits: in csh/tcsh use C<limit> and
4897C<limit datasize n> (where C<n> is the number of kilobytes) to check
4898the current limits and change them, and in ksh/bash/zsh use C<ulimit -a>
4899and C<ulimit -d n>, respectively.
4900
4901=item Out of memory during %s extend
4902
4903(X) An attempt was made to extend an array, a list, or a string beyond
4904the largest possible memory allocation.
4905
4906=item Out of memory during "large" request for %s
4907
4908(F) The malloc() function returned 0, indicating there was insufficient
4909remaining memory (or virtual memory) to satisfy the request.  However,
4910the request was judged large enough (compile-time default is 64K), so a
4911possibility to shut down by trapping this error is granted.
4912
4913=item Out of memory during request for %s
4914
4915(X)(F) The malloc() function returned 0, indicating there was
4916insufficient remaining memory (or virtual memory) to satisfy the
4917request.
4918
4919The request was judged to be small, so the possibility to trap it
4920depends on the way perl was compiled.  By default it is not trappable.
4921However, if compiled for this, Perl may use the contents of C<$^M> as an
4922emergency pool after die()ing with this message.  In this case the error
4923is trappable I<once>, and the error message will include the line and file
4924where the failed request happened.
4925
4926=item Out of memory during ridiculously large request
4927
4928(F) You can't allocate more than 2^31+"small amount" bytes.  This error
4929is most likely to be caused by a typo in the Perl program. e.g.,
4930C<$arr[time]> instead of C<$arr[$time]>.
4931
4932=item Out of memory during vec in lvalue context
4933
4934(F) An attempt was made to extend a string beyond the largest possible memory
4935allocation by assigning to C<vec()> called with a large second argument.
4936
4937=item Out of memory for yacc stack
4938
4939(F) The yacc parser wanted to grow its stack so it could continue
4940parsing, but realloc() wouldn't give it more memory, virtual or
4941otherwise.
4942
4943=item Out of memory in perl:%s
4944
4945(X) A low-level memory allocation routine failed, indicating there was
4946insufficient remaining (virtual) memory to satisfy the request.  Perl has no
4947option but to exit immediately.
4948
4949At least in Unix you may be able to get past this by increasing your process
4950datasize limits: in csh/tcsh use C<limit> and C<limit datasize n> (where C<n>
4951is the number of kilobytes) to check the current limits and change them, and in
4952ksh/bash/zsh use C<ulimit -a> and C<ulimit -d n>, respectively.
4953
4954=item '.' outside of string in pack
4955
4956(F) The argument to a '.' in your template tried to move the working
4957position to before the start of the packed string being built.
4958
4959=item '@' outside of string in unpack
4960
4961(F) You had a template that specified an absolute position outside
4962the string being unpacked.  See L<perlfunc/pack>.
4963
4964=item '@' outside of string with malformed UTF-8 in unpack
4965
4966(F) You had a template that specified an absolute position outside
4967the string being unpacked.  The string being unpacked was also invalid
4968UTF-8.  See L<perlfunc/pack>.
4969
4970=item overload arg '%s' is invalid
4971
4972(W overload) The L<overload> pragma was passed an argument it did not
4973recognize.  Did you mistype an operator?
4974
4975=item Overloaded dereference did not return a reference
4976
4977(F) An object with an overloaded dereference operator was dereferenced,
4978but the overloaded operation did not return a reference.  See
4979L<overload>.
4980
4981=item Overloaded qr did not return a REGEXP
4982
4983(F) An object with a C<qr> overload was used as part of a match, but the
4984overloaded operation didn't return a compiled regexp.  See L<overload>.
4985
4986=item %s package attribute may clash with future reserved word: %s
4987
4988(W reserved) A lowercase attribute name was used that had a
4989package-specific handler.  That name might have a meaning to Perl itself
4990some day, even though it doesn't yet.  Perhaps you should use a
4991mixed-case attribute name, instead.  See L<attributes>.
4992
4993=item pack/unpack repeat count overflow
4994
4995(F) You can't specify a repeat count so large that it overflows your
4996signed integers.  See L<perlfunc/pack>.
4997
4998=item page overflow
4999
5000(W io) A single call to write() produced more lines than can fit on a
5001page.  See L<perlform>.
5002
5003=item panic: %s
5004
5005(P) An internal error.
5006
5007=item panic: attempt to call %s in %s
5008
5009(P) One of the file test operators entered a code branch that calls
5010an ACL related-function, but that function is not available on this
5011platform.  Earlier checks mean that it should not be possible to
5012enter this branch on this platform.
5013
5014=item panic: child pseudo-process was never scheduled
5015
5016(P) A child pseudo-process in the ithreads implementation on Windows
5017was not scheduled within the time period allowed and therefore was not
5018able to initialize properly.
5019
5020=item panic: ck_grep, type=%u
5021
5022(P) Failed an internal consistency check trying to compile a grep.
5023
5024=item panic: corrupt saved stack index %ld
5025
5026(P) The savestack was requested to restore more localized values than
5027there are in the savestack.
5028
5029=item panic: del_backref
5030
5031(P) Failed an internal consistency check while trying to reset a weak
5032reference.
5033
5034=item panic: fold_constants JMPENV_PUSH returned %d
5035
5036(P) While attempting folding constants an exception other than an C<eval>
5037failure was caught.
5038
5039=item panic: frexp: %f
5040
5041(P) The library function frexp() failed, making printf("%f") impossible.
5042
5043=item panic: goto, type=%u, ix=%ld
5044
5045(P) We popped the context stack to a context with the specified label,
5046and then discovered it wasn't a context we know how to do a goto in.
5047
5048=item panic: gp_free failed to free glob pointer
5049
5050(P) The internal routine used to clear a typeglob's entries tried
5051repeatedly, but each time something re-created entries in the glob.
5052Most likely the glob contains an object with a reference back to
5053the glob and a destructor that adds a new object to the glob.
5054
5055=item panic: INTERPCASEMOD, %s
5056
5057(P) The lexer got into a bad state at a case modifier.
5058
5059=item panic: INTERPCONCAT, %s
5060
5061(P) The lexer got into a bad state parsing a string with brackets.
5062
5063=item panic: kid popen errno read
5064
5065(F) A forked child returned an incomprehensible message about its errno.
5066
5067=item panic: leave_scope inconsistency %u
5068
5069(P) The savestack probably got out of sync.  At least, there was an
5070invalid enum on the top of it.
5071
5072=item panic: magic_killbackrefs
5073
5074(P) Failed an internal consistency check while trying to reset all weak
5075references to an object.
5076
5077=item panic: malloc, %s
5078
5079(P) Something requested a negative number of bytes of malloc.
5080
5081=item panic: memory wrap
5082
5083(P) Something tried to allocate either more memory than possible or a
5084negative amount.
5085
5086=item panic: newFORLOOP, %s
5087
5088(P) The parser failed an internal consistency check while trying to parse
5089a C<foreach> loop.
5090
5091=item panic: pad_alloc, %p!=%p
5092
5093(P) The compiler got confused about which scratch pad it was allocating
5094and freeing temporaries and lexicals from.
5095
5096=item panic: pad_free curpad, %p!=%p
5097
5098(P) The compiler got confused about which scratch pad it was allocating
5099and freeing temporaries and lexicals from.
5100
5101=item panic: pad_free po
5102
5103(P) A zero scratch pad offset was detected internally.  An attempt was
5104made to free a target that had not been allocated to begin with.
5105
5106=item panic: pad_reset curpad, %p!=%p
5107
5108(P) The compiler got confused about which scratch pad it was allocating
5109and freeing temporaries and lexicals from.
5110
5111=item panic: pad_sv po
5112
5113(P) A zero scratch pad offset was detected internally.  Most likely
5114an operator needed a target but that target had not been allocated
5115for whatever reason.
5116
5117=item panic: pad_swipe curpad, %p!=%p
5118
5119(P) The compiler got confused about which scratch pad it was allocating
5120and freeing temporaries and lexicals from.
5121
5122=item panic: pad_swipe po
5123
5124(P) An invalid scratch pad offset was detected internally.
5125
5126=item panic: pp_iter, type=%u
5127
5128(P) The foreach iterator got called in a non-loop context frame.
5129
5130=item panic: pp_match%s
5131
5132(P) The internal pp_match() routine was called with invalid operational
5133data.
5134
5135=item panic: realloc, %s
5136
5137(P) Something requested a negative number of bytes of realloc.
5138
5139=item panic: reference miscount on nsv in sv_replace() (%d != 1)
5140
5141(P) The internal sv_replace() function was handed a new SV with a
5142reference count other than 1.
5143
5144=item panic: restartop in %s
5145
5146(P) Some internal routine requested a goto (or something like it), and
5147didn't supply the destination.
5148
5149=item panic: return, type=%u
5150
5151(P) We popped the context stack to a subroutine or eval context, and
5152then discovered it wasn't a subroutine or eval context.
5153
5154=item panic: scan_num, %s
5155
5156(P) scan_num() got called on something that wasn't a number.
5157
5158=item panic: Sequence (?{...}): no code block found in regex m/%s/
5159
5160(P) While compiling a pattern that has embedded (?{}) or (??{}) code
5161blocks, perl couldn't locate the code block that should have already been
5162seen and compiled by perl before control passed to the regex compiler.
5163
5164=item panic: sv_chop %s
5165
5166(P) The sv_chop() routine was passed a position that is not within the
5167scalar's string buffer.
5168
5169=item panic: sv_insert, midend=%p, bigend=%p
5170
5171(P) The sv_insert() routine was told to remove more string than there
5172was string.
5173
5174=item panic: top_env
5175
5176(P) The compiler attempted to do a goto, or something weird like that.
5177
5178=item panic: unexpected constant lvalue entersub entry via type/targ %d:%d
5179
5180(P) When compiling a subroutine call in lvalue context, Perl failed an
5181internal consistency check.  It encountered a malformed op tree.
5182
5183=item panic: unimplemented op %s (#%d) called
5184
5185(P) The compiler is screwed up and attempted to use an op that isn't
5186permitted at run time.
5187
5188=item panic: unknown OA_*: %x
5189
5190(P) The internal routine that handles arguments to C<&CORE::foo()>
5191subroutine calls was unable to determine what type of arguments
5192were expected.
5193
5194=item panic: utf16_to_utf8: odd bytelen
5195
5196(P) Something tried to call utf16_to_utf8 with an odd (as opposed
5197to even) byte length.
5198
5199=item panic: utf16_to_utf8_reversed: odd bytelen
5200
5201(P) Something tried to call utf16_to_utf8_reversed with an odd (as opposed
5202to even) byte length.
5203
5204=item panic: yylex, %s
5205
5206(P) The lexer got into a bad state while processing a case modifier.
5207
5208=item Parentheses missing around "%s" list
5209
5210(W parenthesis) You said something like
5211
5212    my $foo, $bar = @_;
5213
5214when you meant
5215
5216    my ($foo, $bar) = @_;
5217
5218Remember that "my", "our", "local" and "state" bind tighter than comma.
5219
5220=item Parsing code internal error (%s)
5221
5222(F) Parsing code supplied by an extension violated the parser's API in
5223a detectable way.
5224
5225=item Pattern subroutine nesting without pos change exceeded limit in regex
5226
5227(F) You used a pattern that uses too many nested subpattern calls without
5228consuming any text.  Restructure the pattern so text is consumed before
5229the nesting limit is exceeded.
5230
5231=item C<-p> destination: %s
5232
5233(F) An error occurred during the implicit output invoked by the C<-p>
5234command-line switch.  (This output goes to STDOUT unless you've
5235redirected it with select().)
5236
5237=item Perl API version %s of %s does not match %s
5238
5239(F) The XS module in question was compiled against a different incompatible
5240version of Perl than the one that has loaded the XS module.
5241
5242=item Perl folding rules are not up-to-date for 0x%X; please use the perlbug
5243utility to report; in regex; marked by S<<-- HERE> in m/%s/
5244
5245(S regexp) You used a regular expression with case-insensitive matching,
5246and there is a bug in Perl in which the built-in regular expression
5247folding rules are not accurate.  This may lead to incorrect results.
5248Please report this as a bug to L<https://github.com/Perl/perl5/issues/new/choose>.
5249
5250=item Perl_my_%s() not available
5251
5252(F) Your platform has very uncommon byte-order and integer size,
5253so it was not possible to set up some or all fixed-width byte-order
5254conversion functions.  This is only a problem when you're using the
5255'<' or '>' modifiers in (un)pack templates.  See L<perlfunc/pack>.
5256
5257=item Perl %s required (did you mean %s?)--this is only %s, stopped
5258
5259(F) The code you are trying to run has asked for a newer version of
5260Perl than you are running.  Perhaps C<use 5.10> was written instead
5261of C<use 5.010> or C<use v5.10>.  Without the leading C<v>, the number is
5262interpreted as a decimal, with every three digits after the
5263decimal point representing a part of the version number.  So 5.10
5264is equivalent to v5.100.
5265
5266=item Perl %s required--this is only %s, stopped
5267
5268(F) The module in question uses features of a version of Perl more
5269recent than the currently running version.  How long has it been since
5270you upgraded, anyway?  See L<perlfunc/require>.
5271
5272=item PERL_SH_DIR too long
5273
5274(F) An error peculiar to OS/2.  PERL_SH_DIR is the directory to find the
5275C<sh>-shell in.  See "PERL_SH_DIR" in L<perlos2>.
5276
5277=item PERL_SIGNALS illegal: "%s"
5278
5279(X) See L<perlrun/PERL_SIGNALS> for legal values.
5280
5281=item Perls since %s too modern--this is %s, stopped
5282
5283(F) The code you are trying to run claims it will not run
5284on the version of Perl you are using because it is too new.
5285Maybe the code needs to be updated, or maybe it is simply
5286wrong and the version check should just be removed.
5287
5288=item perl: warning: Non hex character in '$ENV{PERL_HASH_SEED}', seed only partially set
5289
5290(S) PERL_HASH_SEED should match /^\s*(?:0x)?[0-9a-fA-F]+\s*\z/ but it
5291contained a non hex character.  This could mean you are not using the
5292hash seed you think you are.
5293
5294=item perl: warning: Setting locale failed.
5295
5296(S) The whole warning message will look something like:
5297
5298	perl: warning: Setting locale failed.
5299	perl: warning: Please check that your locale settings:
5300	        LC_ALL = "En_US",
5301	        LANG = (unset)
5302	    are supported and installed on your system.
5303	perl: warning: Falling back to the standard locale ("C").
5304
5305Exactly what were the failed locale settings varies.  In the above the
5306settings were that the LC_ALL was "En_US" and the LANG had no value.
5307This error means that Perl detected that you and/or your operating
5308system supplier and/or system administrator have set up the so-called
5309locale system but Perl could not use those settings.  This was not
5310dead serious, fortunately: there is a "default locale" called "C" that
5311Perl can and will use, and the script will be run.  Before you really
5312fix the problem, however, you will get the same error message each
5313time you run Perl.  How to really fix the problem can be found in
5314L<perllocale> section B<LOCALE PROBLEMS>.
5315
5316=item perl: warning: strange setting in '$ENV{PERL_PERTURB_KEYS}': '%s'
5317
5318(S) Perl was run with the environment variable PERL_PERTURB_KEYS defined
5319but containing an unexpected value.  The legal values of this setting
5320are as follows.
5321
5322  Numeric | String        | Result
5323  --------+---------------+-----------------------------------------
5324  0       | NO            | Disables key traversal randomization
5325  1       | RANDOM        | Enables full key traversal randomization
5326  2       | DETERMINISTIC | Enables repeatable key traversal
5327          |               | randomization
5328
5329Both numeric and string values are accepted, but note that string values are
5330case sensitive.  The default for this setting is "RANDOM" or 1.
5331
5332=item pid %x not a child
5333
5334(W exec) A warning peculiar to VMS.  Waitpid() was asked to wait for a
5335process which isn't a subprocess of the current process.  While this is
5336fine from VMS' perspective, it's probably not what you intended.
5337
5338=item 'P' must have an explicit size in unpack
5339
5340(F) The unpack format P must have an explicit size, not "*".
5341
5342=item POSIX class [:%s:] unknown in regex; marked by S<<-- HERE> in m/%s/
5343
5344(F) The class in the character class [: :] syntax is unknown.  The S<<-- HERE>
5345shows whereabouts in the regular expression the problem was discovered.
5346Note that the POSIX character classes do B<not> have the C<is> prefix
5347the corresponding C interfaces have: in other words, it's C<[[:print:]]>,
5348not C<isprint>.  See L<perlre>.
5349
5350=item POSIX getpgrp can't take an argument
5351
5352(F) Your system has POSIX getpgrp(), which takes no argument, unlike
5353the BSD version, which takes a pid.
5354
5355=item POSIX syntax [%c %c] belongs inside character classes%s in regex; marked by
5356S<<-- HERE> in m/%s/
5357
5358(W regexp) Perl thinks that you intended to write a POSIX character
5359class, but didn't use enough brackets.  These POSIX class constructs [:
5360:], [= =], and [. .]  go I<inside> character classes, the [] are part of
5361the construct, for example: C<qr/[012[:alpha:]345]/>.  What the regular
5362expression pattern compiled to is probably not what you were intending.
5363For example, C<qr/[:alpha:]/> compiles to a regular bracketed character
5364class consisting of the four characters C<":">,  C<"a">,  C<"l">,
5365C<"h">, and C<"p">.  To specify the POSIX class, it should have been
5366written C<qr/[[:alpha:]]/>.
5367
5368Note that [= =] and [. .] are not currently
5369implemented; they are simply placeholders for future extensions and
5370will cause fatal errors.  The S<<-- HERE> shows whereabouts in the regular
5371expression the problem was discovered.  See L<perlre>.
5372
5373If the specification of the class was not completely valid, the message
5374indicates that.
5375
5376=item POSIX syntax [. .] is reserved for future extensions in regex; marked by
5377S<<-- HERE> in m/%s/
5378
5379(F) Within regular expression character classes ([]) the syntax beginning
5380with "[." and ending with ".]" is reserved for future extensions.  If you
5381need to represent those character sequences inside a regular expression
5382character class, just quote the square brackets with the backslash: "\[."
5383and ".\]".  The S<<-- HERE> shows whereabouts in the regular expression the
5384problem was discovered.  See L<perlre>.
5385
5386=item POSIX syntax [= =] is reserved for future extensions in regex; marked by
5387S<<-- HERE> in m/%s/
5388
5389(F) Within regular expression character classes ([]) the syntax beginning
5390with "[=" and ending with "=]" is reserved for future extensions.  If you
5391need to represent those character sequences inside a regular expression
5392character class, just quote the square brackets with the backslash: "\[="
5393and "=\]".  The S<<-- HERE> shows whereabouts in the regular expression the
5394problem was discovered.  See L<perlre>.
5395
5396=item Possible attempt to put comments in qw() list
5397
5398(W qw) qw() lists contain items separated by whitespace; as with literal
5399strings, comment characters are not ignored, but are instead treated as
5400literal data.  (You may have used different delimiters than the
5401parentheses shown here; braces are also frequently used.)
5402
5403You probably wrote something like this:
5404
5405    @list = qw(
5406	a # a comment
5407        b # another comment
5408    );
5409
5410when you should have written this:
5411
5412    @list = qw(
5413	a
5414        b
5415    );
5416
5417If you really want comments, build your list the
5418old-fashioned way, with quotes and commas:
5419
5420    @list = (
5421        'a',    # a comment
5422        'b',    # another comment
5423    );
5424
5425=item Possible attempt to separate words with commas
5426
5427(W qw) qw() lists contain items separated by whitespace; therefore
5428commas aren't needed to separate the items.  (You may have used
5429different delimiters than the parentheses shown here; braces are also
5430frequently used.)
5431
5432You probably wrote something like this:
5433
5434    qw! a, b, c !;
5435
5436which puts literal commas into some of the list items.  Write it without
5437commas if you don't want them to appear in your data:
5438
5439    qw! a b c !;
5440
5441=item Possible memory corruption: %s overflowed 3rd argument
5442
5443(F) An ioctl() or fcntl() returned more than Perl was bargaining for.
5444Perl guesses a reasonable buffer size, but puts a sentinel byte at the
5445end of the buffer just in case.  This sentinel byte got clobbered, and
5446Perl assumes that memory is now corrupted.  See L<perlfunc/ioctl>.
5447
5448=item Possible precedence issue with control flow operator (%s)
5449
5450(W syntax) There is a possible problem with the mixing of a control
5451flow operator (e.g. C<return>) and a low-precedence operator like
5452C<or>.  Consider:
5453
5454    sub { return $x or $y; }
5455
5456This is parsed as:
5457
5458    sub { (return $x) or $y; }
5459
5460Which is effectively just:
5461
5462    sub { return $x; }
5463
5464Either use parentheses or the high-precedence variant of the operator.
5465
5466Note this may be also triggered for constructs like:
5467
5468    sub { 1 if die; }
5469
5470=item Possible precedence problem on bitwise %s operator
5471
5472(W precedence) Your program uses a bitwise logical operator in conjunction
5473with a numeric comparison operator, like this :
5474
5475    if ($x & $y == 0) { ... }
5476
5477This expression is actually equivalent to C<$x & ($y == 0)>, due to the
5478higher precedence of C<==>.  This is probably not what you want.  (If you
5479really meant to write this, disable the warning, or, better, put the
5480parentheses explicitly and write C<$x & ($y == 0)>).
5481
5482=item Possible unintended interpolation of $\ in regex
5483
5484(W ambiguous) You said something like C<m/$\/> in a regex.
5485The regex C<m/foo$\s+bar/m> translates to: match the word 'foo', the output
5486record separator (see L<perlvar/$\>) and the letter 's' (one time or more)
5487followed by the word 'bar'.
5488
5489If this is what you intended then you can silence the warning by using
5490C<m/${\}/> (for example: C<m/foo${\}s+bar/>).
5491
5492If instead you intended to match the word 'foo' at the end of the line
5493followed by whitespace and the word 'bar' on the next line then you can use
5494C<m/$(?)\/> (for example: C<m/foo$(?)\s+bar/>).
5495
5496=item Possible unintended interpolation of %s in string
5497
5498(W ambiguous) You said something like '@foo' in a double-quoted string
5499but there was no array C<@foo> in scope at the time.  If you wanted a
5500literal @foo, then write it as \@foo; otherwise find out what happened
5501to the array you apparently lost track of.
5502
5503=item Precedence problem: open %s should be open(%s)
5504
5505(S precedence) The old irregular construct
5506
5507    open FOO || die;
5508
5509is now misinterpreted as
5510
5511    open(FOO || die);
5512
5513because of the strict regularization of Perl 5's grammar into unary and
5514list operators.  (The old open was a little of both.)  You must put
5515parentheses around the filehandle, or use the new "or" operator instead
5516of "||".
5517
5518=item Premature end of script headers
5519
5520See L</500 Server error>.
5521
5522=item printf() on closed filehandle %s
5523
5524(W closed) The filehandle you're writing to got itself closed sometime
5525before now.  Check your control flow.
5526
5527=item print() on closed filehandle %s
5528
5529(W closed) The filehandle you're printing on got itself closed sometime
5530before now.  Check your control flow.
5531
5532=item Process terminated by SIG%s
5533
5534(W) This is a standard message issued by OS/2 applications, while *nix
5535applications die in silence.  It is considered a feature of the OS/2
5536port.  One can easily disable this by appropriate sighandlers, see
5537L<perlipc/"Signals">.  See also "Process terminated by SIGTERM/SIGINT"
5538in L<perlos2>.
5539
5540=item Prototype after '%c' for %s : %s
5541
5542(W illegalproto) A character follows % or @ in a prototype.  This is
5543useless, since % and @ gobble the rest of the subroutine arguments.
5544
5545=item Prototype mismatch: %s vs %s
5546
5547(S prototype) The subroutine being declared or defined had previously been
5548declared or defined with a different function prototype.
5549
5550=item Prototype not terminated
5551
5552(F) You've omitted the closing parenthesis in a function prototype
5553definition.
5554
5555=item Prototype '%s' overridden by attribute 'prototype(%s)' in %s
5556
5557(W prototype) A prototype was declared in both the parentheses after
5558the sub name and via the prototype attribute.  The prototype in
5559parentheses is useless, since it will be replaced by the prototype
5560from the attribute before it's ever used.
5561
5562=item %s on BEGIN block ignored
5563
5564(W syntax) C<BEGIN> blocks are executed immediately after they are parsed
5565and then thrown away. Any prototypes or attributes are therefore
5566meaningless and are ignored. You should remove them from the C<BEGIN> block.
5567Note this also means you cannot create a constant called C<BEGIN>.
5568
5569=item Quantifier follows nothing in regex; marked by S<<-- HERE> in m/%s/
5570
5571(F) You started a regular expression with a quantifier.  Backslash it if
5572you meant it literally.  The S<<-- HERE> shows whereabouts in the regular
5573expression the problem was discovered.  See L<perlre>.
5574
5575=item Quantifier in {,} bigger than %d in regex; marked by S<<-- HERE> in m/%s/
5576
5577(F) There is currently a limit to the size of the min and max values of
5578the {min,max} construct.  The S<<-- HERE> shows whereabouts in the regular
5579expression the problem was discovered.  See L<perlre>.
5580
5581=item Quantifier {n,m} with n > m can't match in regex
5582
5583=item Quantifier {n,m} with n > m can't match in regex; marked by
5584S<<-- HERE> in m/%s/
5585
5586(W regexp) Minima should be less than or equal to maxima.  If you really
5587want your regexp to match something 0 times, just put {0}.
5588
5589=item Quantifier unexpected on zero-length expression in regex m/%s/
5590
5591(W regexp) You applied a regular expression quantifier in a place where
5592it makes no sense, such as on a zero-width assertion.  Try putting the
5593quantifier inside the assertion instead.  For example, the way to match
5594"abc" provided that it is followed by three repetitions of "xyz" is
5595C</abc(?=(?:xyz){3})/>, not C</abc(?=xyz){3}/>.
5596
5597=item Range iterator outside integer range
5598
5599(F) One (or both) of the numeric arguments to the range operator ".."
5600are outside the range which can be represented by integers internally.
5601One possible workaround is to force Perl to use magical string increment
5602by prepending "0" to your numbers.
5603
5604=item Ranges of ASCII printables should be some subset of "0-9", "A-Z", or
5605"a-z" in regex; marked by S<<-- HERE> in m/%s/
5606
5607(W regexp) (only under C<S<use re 'strict'>> or within C<(?[...])>)
5608
5609Stricter rules help to find typos and other errors.  Perhaps you didn't
5610even intend a range here, if the C<"-"> was meant to be some other
5611character, or should have been escaped (like C<"\-">).  If you did
5612intend a range, the one that was used is not portable between ASCII and
5613EBCDIC platforms, and doesn't have an obvious meaning to a casual
5614reader.
5615
5616 [3-7]    # OK; Obvious and portable
5617 [d-g]    # OK; Obvious and portable
5618 [A-Y]    # OK; Obvious and portable
5619 [A-z]    # WRONG; Not portable; not clear what is meant
5620 [a-Z]    # WRONG; Not portable; not clear what is meant
5621 [%-.]    # WRONG; Not portable; not clear what is meant
5622 [\x41-Z] # WRONG; Not portable; not obvious to non-geek
5623
5624(You can force portability by specifying a Unicode range, which means that
5625the endpoints are specified by
5626L<C<\N{...}>|perlrecharclass/Character Ranges>, but the meaning may
5627still not be obvious.)
5628The stricter rules require that ranges that start or stop with an ASCII
5629character that is not a control have all their endpoints be the literal
5630character, and not some escape sequence (like C<"\x41">), and the ranges
5631must be all digits, or all uppercase letters, or all lowercase letters.
5632
5633=item Ranges of digits should be from the same group in regex; marked by
5634S<<-- HERE> in m/%s/
5635
5636(W regexp) (only under C<S<use re 'strict'>> or within C<(?[...])>)
5637
5638Stricter rules help to find typos and other errors.  You included a
5639range, and at least one of the end points is a decimal digit.  Under the
5640stricter rules, when this happens, both end points should be digits in
5641the same group of 10 consecutive digits.
5642
5643=item readdir() attempted on invalid dirhandle %s
5644
5645(W io) The dirhandle you're reading from is either closed or not really
5646a dirhandle.  Check your control flow.
5647
5648=item readline() on closed filehandle %s
5649
5650(W closed) The filehandle you're reading from got itself closed sometime
5651before now.  Check your control flow.
5652
5653=item readline() on unopened filehandle %s
5654
5655(W unopened) The filehandle you're reading from was never opened.  Check your
5656control flow.
5657
5658=item read() on closed filehandle %s
5659
5660(W closed) You tried to read from a closed filehandle.
5661
5662=item read() on unopened filehandle %s
5663
5664(W unopened) You tried to read from a filehandle that was never opened.
5665
5666=item realloc() of freed memory ignored
5667
5668(S malloc) An internal routine called realloc() on something that had
5669already been freed.
5670
5671=item Recompile perl with B<-D>DEBUGGING to use B<-D> switch
5672
5673(S debugging) You can't use the B<-D> option unless the code to produce
5674the desired output is compiled into Perl, which entails some overhead,
5675which is why it's currently left out of your copy.
5676
5677=item Recursive call to Perl_load_module in PerlIO_find_layer
5678
5679(P) It is currently not permitted to load modules when creating
5680a filehandle inside an %INC hook.  This can happen with C<open my
5681$fh, '<', \$scalar>, which implicitly loads PerlIO::scalar.  Try
5682loading PerlIO::scalar explicitly first.
5683
5684=item Recursive inheritance detected in package '%s'
5685
5686(F) While calculating the method resolution order (MRO) of a package, Perl
5687believes it found an infinite loop in the C<@ISA> hierarchy.  This is a
5688crude check that bails out after 100 levels of C<@ISA> depth.
5689
5690=item Redundant argument in %s
5691
5692(W redundant) You called a function with more arguments than other
5693arguments you supplied indicated would be needed.  Currently only
5694emitted when a printf-type format required fewer arguments than were
5695supplied, but might be used in the future for e.g. L<perlfunc/pack>.
5696
5697=item refcnt_dec: fd %d%s
5698
5699=item refcnt: fd %d%s
5700
5701=item refcnt_inc: fd %d%s
5702
5703(P) Perl's I/O implementation failed an internal consistency check.  If
5704you see this message, something is very wrong.
5705
5706=item Reference found where even-sized list expected
5707
5708(W misc) You gave a single reference where Perl was expecting a list
5709with an even number of elements (for assignment to a hash).  This
5710usually means that you used the anon hash constructor when you meant
5711to use parens.  In any case, a hash requires key/value B<pairs>.
5712
5713    %hash = { one => 1, two => 2, };	# WRONG
5714    %hash = [ qw/ an anon array / ];	# WRONG
5715    %hash = ( one => 1, two => 2, );	# right
5716    %hash = qw( one 1 two 2 );			# also fine
5717
5718=item Reference is already weak
5719
5720(W misc) You have attempted to weaken a reference that is already weak.
5721Doing so has no effect.
5722
5723=item Reference is not weak
5724
5725(W misc) You have attempted to unweaken a reference that is not weak.
5726Doing so has no effect.
5727
5728=item Reference to invalid group 0 in regex; marked by S<<-- HERE> in m/%s/
5729
5730(F) You used C<\g0> or similar in a regular expression.  You may refer
5731to capturing parentheses only with strictly positive integers
5732(normal backreferences) or with strictly negative integers (relative
5733backreferences).  Using 0 does not make sense.
5734
5735=item Reference to nonexistent group in regex; marked by S<<-- HERE> in
5736m/%s/
5737
5738(F) You used something like C<\7> in your regular expression, but there are
5739not at least seven sets of capturing parentheses in the expression.  If
5740you wanted to have the character with ordinal 7 inserted into the regular
5741expression, prepend zeroes to make it three digits long: C<\007>
5742
5743The S<<-- HERE> shows whereabouts in the regular expression the problem was
5744discovered.
5745
5746=item Reference to nonexistent named group in regex; marked by S<<-- HERE>
5747in m/%s/
5748
5749(F) You used something like C<\k'NAME'> or C<< \k<NAME> >> in your regular
5750expression, but there is no corresponding named capturing parentheses
5751such as C<(?'NAME'...)> or C<< (?<NAME>...) >>.  Check if the name has been
5752spelled correctly both in the backreference and the declaration.
5753
5754The S<<-- HERE> shows whereabouts in the regular expression the problem was
5755discovered.
5756
5757=item Reference to nonexistent or unclosed group in regex; marked by
5758S<<-- HERE> in m/%s/
5759
5760(F) You used something like C<\g{-7}> in your regular expression, but there
5761are not at least seven sets of closed capturing parentheses in the
5762expression before where the C<\g{-7}> was located.
5763
5764The S<<-- HERE> shows whereabouts in the regular expression the problem was
5765discovered.
5766
5767=item regexp memory corruption
5768
5769(P) The regular expression engine got confused by what the regular
5770expression compiler gave it.
5771
5772=item Regexp modifier "/%c" may appear a maximum of twice
5773
5774=item Regexp modifier "%c" may appear a maximum of twice in regex; marked
5775by S<<-- HERE> in m/%s/
5776
5777(F) The regular expression pattern had too many occurrences
5778of the specified modifier.  Remove the extraneous ones.
5779
5780=item Regexp modifier "%c" may not appear after the "-" in regex; marked by <--
5781HERE in m/%s/
5782
5783(F) Turning off the given modifier has the side effect of turning on
5784another one.  Perl currently doesn't allow this.  Reword the regular
5785expression to use the modifier you want to turn on (and place it before
5786the minus), instead of the one you want to turn off.
5787
5788=item Regexp modifier "/%c" may not appear twice
5789
5790=item Regexp modifier "%c" may not appear twice in regex; marked by <--
5791HERE in m/%s/
5792
5793(F) The regular expression pattern had too many occurrences
5794of the specified modifier.  Remove the extraneous ones.
5795
5796=item Regexp modifiers "/%c" and "/%c" are mutually exclusive
5797
5798=item Regexp modifiers "%c" and "%c" are mutually exclusive in regex;
5799marked by S<<-- HERE> in m/%s/
5800
5801(F) The regular expression pattern had more than one of these
5802mutually exclusive modifiers.  Retain only the modifier that is
5803supposed to be there.
5804
5805=item Regexp out of space in regex m/%s/
5806
5807(P) A "can't happen" error, because safemalloc() should have caught it
5808earlier.
5809
5810=item Repeated format line will never terminate (~~ and @#)
5811
5812(F) Your format contains the ~~ repeat-until-blank sequence and a
5813numeric field that will never go blank so that the repetition never
5814terminates.  You might use ^# instead.  See L<perlform>.
5815
5816=item Replacement list is longer than search list
5817
5818(W misc) You have used a replacement list that is longer than the
5819search list.  So the additional elements in the replacement list
5820are meaningless.
5821
5822=item Required parameter '%s' is missing for %s constructor
5823
5824(F) You called the constructor for a class that has a required named
5825parameter, but did not pass that parameter at all.
5826
5827=item '(*%s' requires a terminating ':' in regex; marked by <-- HERE in m/%s/
5828
5829(F) You used a construct that needs a colon and pattern argument.
5830Supply these or check that you are using the right construct.
5831
5832=item '%s' resolved to '\o{%s}%d'
5833
5834As of Perl 5.32, this message is no longer generated.  Instead, see
5835L</Non-octal character '%c' terminates \o early.  Resolved as "%s">.
5836(W misc, regexp)  You wrote something like C<\08>, or C<\179> in a
5837double-quotish string.  All but the last digit is treated as a single
5838character, specified in octal.  The last digit is the next character in
5839the string.  To tell Perl that this is indeed what you want, you can use
5840the C<\o{ }> syntax, or use exactly three digits to specify the octal
5841for the character.
5842
5843=item Reversed %s= operator
5844
5845(W syntax) You wrote your assignment operator backwards.  The = must
5846always come last, to avoid ambiguity with subsequent unary operators.
5847
5848=item rewinddir() attempted on invalid dirhandle %s
5849
5850(W io) The dirhandle you tried to do a rewinddir() on is either closed
5851or not really a dirhandle.  Check your control flow.
5852
5853=item Scalars leaked: %d
5854
5855(S internal) Something went wrong in Perl's internal bookkeeping
5856of scalars: not all scalar variables were deallocated by the time
5857Perl exited.  What this usually indicates is a memory leak, which
5858is of course bad, especially if the Perl program is intended to be
5859long-running.
5860
5861=item Scalar value @%s[%s] better written as $%s[%s]
5862
5863(W syntax) You've used an array slice (indicated by @) to select a
5864single element of an array.  Generally it's better to ask for a scalar
5865value (indicated by $).  The difference is that C<$foo[&bar]> always
5866behaves like a scalar, both when assigning to it and when evaluating its
5867argument, while C<@foo[&bar]> behaves like a list when you assign to it,
5868and provides a list context to its subscript, which can do weird things
5869if you're expecting only one subscript.
5870
5871On the other hand, if you were actually hoping to treat the array
5872element as a list, you need to look into how references work, because
5873Perl will not magically convert between scalars and lists for you.  See
5874L<perlref>.
5875
5876=item Scalar value @%s{%s} better written as $%s{%s}
5877
5878(W syntax) You've used a hash slice (indicated by @) to select a single
5879element of a hash.  Generally it's better to ask for a scalar value
5880(indicated by $).  The difference is that C<$foo{&bar}> always behaves
5881like a scalar, both when assigning to it and when evaluating its
5882argument, while C<@foo{&bar}> behaves like a list when you assign to it,
5883and provides a list context to its subscript, which can do weird things
5884if you're expecting only one subscript.
5885
5886On the other hand, if you were actually hoping to treat the hash element
5887as a list, you need to look into how references work, because Perl will
5888not magically convert between scalars and lists for you.  See
5889L<perlref>.
5890
5891=item Search pattern not terminated
5892
5893(F) The lexer couldn't find the final delimiter of a // or m{}
5894construct.  Remember that bracketing delimiters count nesting level.
5895Missing the leading C<$> from a variable C<$m> may cause this error.
5896
5897Note that since Perl 5.10.0 a // can also be the I<defined-or>
5898construct, not just the empty search pattern.  Therefore code written
5899in Perl 5.10.0 or later that uses the // as the I<defined-or> can be
5900misparsed by pre-5.10.0 Perls as a non-terminated search pattern.
5901
5902=item seekdir() attempted on invalid dirhandle %s
5903
5904(W io) The dirhandle you are doing a seekdir() on is either closed or not
5905really a dirhandle.  Check your control flow.
5906
5907=item %sseek() on unopened filehandle
5908
5909(W unopened) You tried to use the seek() or sysseek() function on a
5910filehandle that was either never opened or has since been closed.
5911
5912=item select not implemented
5913
5914(F) This machine doesn't implement the select() system call.
5915
5916=item Self-ties of arrays and hashes are not supported
5917
5918(F) Self-ties are of arrays and hashes are not supported in
5919the current implementation.
5920
5921=item Semicolon seems to be missing
5922
5923(W semicolon) A nearby syntax error was probably caused by a missing
5924semicolon, or possibly some other missing operator, such as a comma.
5925
5926=item semi-panic: attempt to dup freed string
5927
5928(S internal) The internal newSVsv() routine was called to duplicate a
5929scalar that had previously been marked as free.
5930
5931=item sem%s not implemented
5932
5933(F) You don't have System V semaphore IPC on your system.
5934
5935=item send() on closed socket %s
5936
5937(W closed) The socket you're sending to got itself closed sometime
5938before now.  Check your control flow.
5939
5940=item Sequence "\c{" invalid
5941
5942(F) These three characters may not appear in sequence in a
5943double-quotish context.  This message is raised only on non-ASCII
5944platforms (a different error message is output on ASCII ones).  If you
5945were intending to specify a control character with this sequence, you'll
5946have to use a different way to specify it.
5947
5948=item Sequence (? incomplete in regex; marked by S<<-- HERE> in m/%s/
5949
5950(F) A regular expression ended with an incomplete extension (?.  The
5951S<<-- HERE> shows whereabouts in the regular expression the problem was
5952discovered.  See L<perlre>.
5953
5954=item Sequence (?%c...) not implemented in regex; marked by S<<-- HERE> in
5955m/%s/
5956
5957(F) A proposed regular expression extension has the character reserved
5958but has not yet been written.  The S<<-- HERE> shows whereabouts in the
5959regular expression the problem was discovered.  See L<perlre>.
5960
5961=item Sequence (?%s...) not recognized in regex; marked by S<<-- HERE> in
5962m/%s/
5963
5964(F) You used a regular expression extension that doesn't make sense.
5965The S<<-- HERE> shows whereabouts in the regular expression the problem was
5966discovered.  This may happen when using the C<(?^...)> construct to tell
5967Perl to use the default regular expression modifiers, and you
5968redundantly specify a default modifier.  For other
5969causes, see L<perlre>.
5970
5971=item Sequence (?#... not terminated in regex m/%s/
5972
5973(F) A regular expression comment must be terminated by a closing
5974parenthesis.  Embedded parentheses aren't allowed.  See
5975L<perlre>.
5976
5977=item Sequence (?&... not terminated in regex; marked by S<<-- HERE> in
5978m/%s/
5979
5980(F) A named reference of the form C<(?&...)> was missing the final
5981closing parenthesis after the name.  The S<<-- HERE> shows whereabouts
5982in the regular expression the problem was discovered.
5983
5984=item Sequence (?%c... not terminated in regex; marked by S<<-- HERE>
5985in m/%s/
5986
5987(F) A named group of the form C<(?'...')> or C<< (?<...>) >> was missing the final
5988closing quote or angle bracket.  The S<<-- HERE> shows whereabouts in the
5989regular expression the problem was discovered.
5990
5991=item Sequence (%s... not terminated in regex; marked by S<<-- HERE>
5992in m/%s/
5993
5994(F) A lookahead assertion C<(?=...)> or C<(?!...)> or lookbehind
5995assertion C<< (?<=...) >> or C<< (?<!...) >> was missing the final
5996closing parenthesis.  The S<<-- HERE> shows whereabouts in the
5997regular expression the problem was discovered.
5998
5999=item Sequence (?(%c... not terminated in regex; marked by S<<-- HERE>
6000in m/%s/
6001
6002(F) A named reference of the form C<(?('...')...)> or C<< (?(<...>)...) >> was
6003missing the final closing quote or angle bracket after the name.  The
6004S<<-- HERE> shows whereabouts in the regular expression the problem was
6005discovered.
6006
6007=item Sequence (?... not terminated in regex; marked by S<<-- HERE> in
6008m/%s/
6009
6010(F) There was no matching closing parenthesis for the '('.  The
6011S<<-- HERE> shows whereabouts in the regular expression the problem was
6012discovered.
6013
6014=item Sequence \%s... not terminated in regex; marked by S<<-- HERE> in
6015m/%s/
6016
6017(F) The regular expression expects a mandatory argument following the escape
6018sequence and this has been omitted or incorrectly written.
6019
6020=item Sequence (?{...}) not terminated with ')'
6021
6022(F) The end of the perl code contained within the {...} must be
6023followed immediately by a ')'.
6024
6025=item Sequence (?PE<gt>... not terminated in regex; marked by S<<-- HERE> in m/%s/
6026
6027(F) A named reference of the form C<(?PE<gt>...)> was missing the final
6028closing parenthesis after the name.  The S<<-- HERE> shows whereabouts
6029in the regular expression the problem was discovered.
6030
6031=item Sequence (?PE<lt>... not terminated in regex; marked by S<<-- HERE> in m/%s/
6032
6033(F) A named group of the form C<(?PE<lt>...E<gt>')> was missing the final
6034closing angle bracket.  The S<<-- HERE> shows whereabouts in the
6035regular expression the problem was discovered.
6036
6037=item Sequence ?P=... not terminated in regex; marked by S<<-- HERE> in
6038m/%s/
6039
6040(F) A named reference of the form C<(?P=...)> was missing the final
6041closing parenthesis after the name.  The S<<-- HERE> shows whereabouts
6042in the regular expression the problem was discovered.
6043
6044=item Sequence (?R) not terminated in regex m/%s/
6045
6046(F) An C<(?R)> or C<(?0)> sequence in a regular expression was missing the
6047final parenthesis.
6048
6049=item Z<>500 Server error
6050
6051(A) This is the error message generally seen in a browser window
6052when trying to run a CGI program (including SSI) over the web.  The
6053actual error text varies widely from server to server.  The most
6054frequently-seen variants are "500 Server error", "Method (something)
6055not permitted", "Document contains no data", "Premature end of script
6056headers", and "Did not produce a valid header".
6057
6058B<This is a CGI error, not a Perl error>.
6059
6060You need to make sure your script is executable, is accessible by
6061the user CGI is running the script under (which is probably not the
6062user account you tested it under), does not rely on any environment
6063variables (like PATH) from the user it isn't running under, and isn't
6064in a location where the CGI server can't find it, basically, more or
6065less.  Please see the following for more information:
6066
6067	https://www.perl.org/CGI_MetaFAQ.html
6068	http://www.htmlhelp.org/faq/cgifaq.html
6069	http://www.w3.org/Security/Faq/
6070
6071You should also look at L<perlfaq9>.
6072
6073=item setegid() not implemented
6074
6075(F) You tried to assign to C<$)>, and your operating system doesn't
6076support the setegid() system call (or equivalent), or at least Configure
6077didn't think so.
6078
6079=item seteuid() not implemented
6080
6081(F) You tried to assign to C<< $> >>, and your operating system doesn't
6082support the seteuid() system call (or equivalent), or at least Configure
6083didn't think so.
6084
6085=item setpgrp can't take arguments
6086
6087(F) Your system has the setpgrp() from BSD 4.2, which takes no
6088arguments, unlike POSIX setpgid(), which takes a process ID and process
6089group ID.
6090
6091=item setrgid() not implemented
6092
6093(F) You tried to assign to C<$(>, and your operating system doesn't
6094support the setrgid() system call (or equivalent), or at least Configure
6095didn't think so.
6096
6097=item setruid() not implemented
6098
6099(F) You tried to assign to C<$<>, and your operating system doesn't
6100support the setruid() system call (or equivalent), or at least Configure
6101didn't think so.
6102
6103=item setsockopt() on closed socket %s
6104
6105(W closed) You tried to set a socket option on a closed socket.  Did you
6106forget to check the return value of your socket() call?  See
6107L<perlfunc/setsockopt>.
6108
6109=item Setting $/ to a reference to %s is forbidden
6110
6111(F) You assigned a reference to a scalar to C<$/> where the referenced item is
6112not a positive integer.  In older perls this B<appeared> to work the same as
6113setting it to C<undef> but was in fact internally different, less efficient
6114and with very bad luck could have resulted in your file being split by a
6115stringified form of the reference.
6116
6117In Perl 5.20.0 this was changed so that it would be B<exactly> the same as
6118setting C<$/> to undef, with the exception that this warning would be thrown.
6119
6120You are recommended to change your code to set C<$/> to C<undef> explicitly if
6121you wish to slurp the file.  As of Perl 5.28 assigning C<$/> to a reference
6122to an integer which isn't positive is a fatal error.
6123
6124=item Setting $/ to %s reference is forbidden
6125
6126(F) You tried to assign a reference to a non integer to C<$/>.  In older
6127Perls this would have behaved similarly to setting it to a reference to
6128a positive integer, where the integer was the address of the reference.
6129As of Perl 5.20.0 this is a fatal error, to allow future versions of Perl
6130to use non-integer refs for more interesting purposes.
6131
6132=item shm%s not implemented
6133
6134(F) You don't have System V shared memory IPC on your system.
6135
6136=item !=~ should be !~
6137
6138(W syntax) The non-matching operator is !~, not !=~.  !=~ will be
6139interpreted as the != (numeric not equal) and ~ (1's complement)
6140operators: probably not what you intended.
6141
6142=item /%s/ should probably be written as "%s"
6143
6144(W syntax) You have used a pattern where Perl expected to find a string,
6145as in the first argument to C<join>.  Perl will treat the true or false
6146result of matching the pattern against $_ as the string, which is
6147probably not what you had in mind.
6148
6149=item shutdown() on closed socket %s
6150
6151(W closed) You tried to do a shutdown on a closed socket.  Seems a bit
6152superfluous.
6153
6154=item SIG%s handler "%s" not defined
6155
6156(W signal) The signal handler named in %SIG doesn't, in fact, exist.
6157Perhaps you put it into the wrong package?
6158
6159=item Slab leaked from cv %p
6160
6161(S) If you see this message, then something is seriously wrong with the
6162internal bookkeeping of op trees.  An op tree needed to be freed after
6163a compilation error, but could not be found, so it was leaked instead.
6164
6165=item sleep(%u) too large
6166
6167(W overflow) You called C<sleep> with a number that was larger than
6168it can reliably handle and C<sleep> probably slept for less time than
6169requested.
6170
6171=item Slurpy parameter not last
6172
6173(F) In a subroutine signature, you put something after a slurpy (array or
6174hash) parameter.  The slurpy parameter takes all the available arguments,
6175so there can't be any left to fill later parameters.
6176
6177=item Smart matching a non-overloaded object breaks encapsulation
6178
6179(F) You should not use the C<~~> operator on an object that does not
6180overload it: Perl refuses to use the object's underlying structure
6181for the smart match.
6182
6183=item Smartmatch is deprecated
6184
6185(D deprecated::smartmatch) This warning is emitted if you
6186use the smartmatch (C<~~>) operator.  This is a deprecated
6187feature.  Particularly, its behavior is noticed for being
6188unnecessarily complex and unintuitive, and it will be removed
6189in Perl 5.42.
6190
6191=item Sorry, hash keys must be smaller than 2**31 bytes
6192
6193(F) You tried to create a hash containing a very large key, where "very
6194large" means that it needs at least 2 gigabytes to store. Unfortunately,
6195Perl doesn't yet handle such large hash keys. You should
6196reconsider your design to avoid hashing such a long string directly.
6197
6198=item sort is now a reserved word
6199
6200(F) An ancient error message that almost nobody ever runs into anymore.
6201But before sort was a keyword, people sometimes used it as a filehandle.
6202
6203=item Source filters apply only to byte streams
6204
6205(F) You tried to activate a source filter (usually by loading a
6206source filter module) within a string passed to C<eval>.  This is
6207not permitted under the C<unicode_eval> feature.  Consider using
6208C<evalbytes> instead.  See L<feature>.
6209
6210=item splice() offset past end of array
6211
6212(W misc) You attempted to specify an offset that was past the end of
6213the array passed to splice().  Splicing will instead commence at the
6214end of the array, rather than past it.  If this isn't what you want,
6215try explicitly pre-extending the array by assigning $#array = $offset.
6216See L<perlfunc/splice>.
6217
6218=item Split loop
6219
6220(P) The split was looping infinitely.  (Obviously, a split shouldn't
6221iterate more times than there are characters of input, which is what
6222happened.)  See L<perlfunc/split>.
6223
6224=item Statement unlikely to be reached
6225
6226(W exec) You did an exec() with some statement after it other than a
6227die().  This is almost always an error, because exec() never returns
6228unless there was a failure.  You probably wanted to use system()
6229instead, which does return.  To suppress this warning, put the exec() in
6230a block by itself.
6231
6232=item "state" subroutine %s can't be in a package
6233
6234(F) Lexically scoped subroutines aren't in a package, so it doesn't make
6235sense to try to declare one with a package qualifier on the front.
6236
6237=item "state %s" used in sort comparison
6238
6239(W syntax) The package variables $a and $b are used for sort comparisons.
6240You used $a or $b in as an operand to the C<< <=> >> or C<cmp> operator inside a
6241sort comparison block, and the variable had earlier been declared as a
6242lexical variable.  Either qualify the sort variable with the package
6243name, or rename the lexical variable.
6244
6245=item "state" variable %s can't be in a package
6246
6247(F) Lexically scoped variables aren't in a package, so it doesn't make
6248sense to try to declare one with a package qualifier on the front.  Use
6249local() if you want to localize a package variable.
6250
6251=item stat() on unopened filehandle %s
6252
6253(W unopened) You tried to use the stat() function on a filehandle that
6254was either never opened or has since been closed.
6255
6256=item Strings with code points over 0xFF may not be mapped into in-memory file handles
6257
6258(W utf8) You tried to open a reference to a scalar for read or append
6259where the scalar contained code points over 0xFF.  In-memory files
6260model on-disk files and can only contain bytes.
6261
6262=item Stub found while resolving method "%s" overloading "%s" in package "%s"
6263
6264(P) Overloading resolution over @ISA tree may be broken by importation
6265stubs.  Stubs should never be implicitly created, but explicit calls to
6266C<can> may break this.
6267
6268=item Subroutine attributes must come before the signature
6269
6270(F) When subroutine signatures are enabled, any subroutine attributes must
6271come before the signature. Note that this order was the opposite in
6272versions 5.22..5.26. So:
6273
6274    sub foo :lvalue ($x, $y) { ... }  # 5.20 and 5.28 +
6275    sub foo ($x, $y) :lvalue { ... }  # 5.22 .. 5.26
6276
6277=item Subroutine "&%s" is not available
6278
6279(W closure) During compilation, an inner named subroutine or eval is
6280attempting to capture an outer lexical subroutine that is not currently
6281available.  This can happen for one of two reasons.  First, the lexical
6282subroutine may be declared in an outer anonymous subroutine that has
6283not yet been created.  (Remember that named subs are created at compile
6284time, while anonymous subs are created at run-time.)  For example,
6285
6286    sub { my sub a {...} sub f { \&a } }
6287
6288At the time that f is created, it can't capture the current "a" sub,
6289since the anonymous subroutine hasn't been created yet.  Conversely, the
6290following won't give a warning since the anonymous subroutine has by now
6291been created and is live:
6292
6293    sub { my sub a {...} eval 'sub f { \&a }' }->();
6294
6295The second situation is caused by an eval accessing a lexical subroutine
6296that has gone out of scope, for example,
6297
6298    sub f {
6299	my sub a {...}
6300	sub { eval '\&a' }
6301    }
6302    f()->();
6303
6304Here, when the '\&a' in the eval is being compiled, f() is not currently
6305being executed, so its &a is not available for capture.
6306
6307=item "%s" subroutine &%s masks earlier declaration in same %s
6308
6309(W shadow) A "my" or "state" subroutine has been redeclared in the
6310current scope or statement, effectively eliminating all access to
6311the previous instance.  This is almost always a typographical error.
6312Note that the earlier subroutine will still exist until the end of
6313the scope or until all closure references to it are destroyed.
6314
6315=item Subroutine %s redefined
6316
6317(W redefine) You redefined a subroutine.  To suppress this warning, say
6318
6319    {
6320	no warnings 'redefine';
6321	eval "sub name { ... }";
6322    }
6323
6324=item Subroutine "%s" will not stay shared
6325
6326(W closure) An inner (nested) I<named> subroutine is referencing a "my"
6327subroutine defined in an outer named subroutine.
6328
6329When the inner subroutine is called, it will see the value of the outer
6330subroutine's lexical subroutine as it was before and during the *first*
6331call to the outer subroutine; in this case, after the first call to the
6332outer subroutine is complete, the inner and outer subroutines will no
6333longer share a common value for the lexical subroutine.  In other words,
6334it will no longer be shared.  This will especially make a difference
6335if the lexical subroutines accesses lexical variables declared in its
6336surrounding scope.
6337
6338This problem can usually be solved by making the inner subroutine
6339anonymous, using the C<sub {}> syntax.  When inner anonymous subs that
6340reference lexical subroutines in outer subroutines are created, they
6341are automatically rebound to the current values of such lexical subs.
6342
6343=item Substitution loop
6344
6345(P) The substitution was looping infinitely.  (Obviously, a substitution
6346shouldn't iterate more times than there are characters of input, which
6347is what happened.)  See the discussion of substitution in
6348L<perlop/"Regexp Quote-Like Operators">.
6349
6350=item Substitution pattern not terminated
6351
6352(F) The lexer couldn't find the interior delimiter of an s/// or s{}{}
6353construct.  Remember that bracketing delimiters count nesting level.
6354Missing the leading C<$> from variable C<$s> may cause this error.
6355
6356=item Substitution replacement not terminated
6357
6358(F) The lexer couldn't find the final delimiter of an s/// or s{}{}
6359construct.  Remember that bracketing delimiters count nesting level.
6360Missing the leading C<$> from variable C<$s> may cause this error.
6361
6362=item substr outside of string
6363
6364(W substr)(F) You tried to reference a substr() that pointed outside of
6365a string.  That is, the absolute value of the offset was larger than the
6366length of the string.  See L<perlfunc/substr>.  This warning is fatal if
6367substr is used in an lvalue context (as the left hand side of an
6368assignment or as a subroutine argument for example).
6369
6370=item sv_upgrade from type %d down to type %d
6371
6372(P) Perl tried to force the upgrade of an SV to a type which was actually
6373inferior to its current type.
6374
6375=item Switch (?(condition)... contains too many branches in regex; marked by
6376S<<-- HERE> in m/%s/
6377
6378(F) A (?(condition)if-clause|else-clause) construct can have at most
6379two branches (the if-clause and the else-clause).  If you want one or
6380both to contain alternation, such as using C<this|that|other>, enclose
6381it in clustering parentheses:
6382
6383    (?(condition)(?:this|that|other)|else-clause)
6384
6385The S<<-- HERE> shows whereabouts in the regular expression the problem
6386was discovered.  See L<perlre>.
6387
6388=item Switch condition not recognized in regex; marked by S<<-- HERE> in
6389m/%s/
6390
6391(F) The condition part of a (?(condition)if-clause|else-clause) construct
6392is not known.  The condition must be one of the following:
6393
6394 (1) (2) ...        true if 1st, 2nd, etc., capture matched
6395 (<NAME>) ('NAME')  true if named capture matched
6396 (?=...) (?<=...)   true if subpattern matches
6397 (?!...) (?<!...)   true if subpattern fails to match
6398 (?{ CODE })        true if code returns a true value
6399 (R)                true if evaluating inside recursion
6400 (R1) (R2) ...      true if directly inside capture group 1, 2, etc.
6401 (R&NAME)           true if directly inside named capture
6402 (DEFINE)           always false; for defining named subpatterns
6403
6404The S<<-- HERE> shows whereabouts in the regular expression the problem was
6405discovered.  See L<perlre>.
6406
6407=item Switch (?(condition)... not terminated in regex; marked by
6408S<<-- HERE> in m/%s/
6409
6410(F) You omitted to close a (?(condition)...) block somewhere
6411in the pattern.  Add a closing parenthesis in the appropriate
6412position.  See L<perlre>.
6413
6414=item switching effective %s is not implemented
6415
6416(F) While under the C<use filetest> pragma, we cannot switch the real
6417and effective uids or gids.
6418
6419=item syntax error
6420
6421(F) Probably means you had a syntax error.  Common reasons include:
6422
6423    A keyword is misspelled.
6424    A semicolon is missing.
6425    A comma is missing.
6426    An opening or closing parenthesis is missing.
6427    An opening or closing brace is missing.
6428    A closing quote is missing.
6429
6430Often there will be another error message associated with the syntax
6431error giving more information.  (Sometimes it helps to turn on B<-w>.)
6432The error message itself often tells you where it was in the line when
6433it decided to give up.  Sometimes the actual error is several tokens
6434before this, because Perl is good at understanding random input.
6435Occasionally the line number may be misleading, and once in a blue moon
6436the only way to figure out what's triggering the error is to call
6437C<perl -c> repeatedly, chopping away half the program each time to see
6438if the error went away.  Sort of the cybernetic version of S<20 questions>.
6439
6440=item syntax error at line %d: '%s' unexpected
6441
6442(A) You've accidentally run your script through the Bourne shell instead
6443of Perl.  Check the #! line, or manually feed your script into Perl
6444yourself.
6445
6446=item syntax error in file %s at line %d, next 2 tokens "%s"
6447
6448(F) This error is likely to occur if you run a perl5 script through
6449a perl4 interpreter, especially if the next 2 tokens are "use strict"
6450or "my $var" or "our $var".
6451
6452=item Syntax error in (?[...]) in regex; marked by <-- HERE in m/%s/
6453
6454(F) Perl could not figure out what you meant inside this construct; this
6455notifies you that it is giving up trying.
6456
6457=item %s syntax OK
6458
6459(F) The final summary message when a C<perl -c> succeeds.
6460
6461=item sysread() on closed filehandle %s
6462
6463(W closed) You tried to read from a closed filehandle.
6464
6465=item sysread() on unopened filehandle %s
6466
6467(W unopened) You tried to read from a filehandle that was never opened.
6468
6469=item System V %s is not implemented on this machine
6470
6471(F) You tried to do something with a function beginning with "sem",
6472"shm", or "msg" but that System V IPC is not implemented in your
6473machine.  In some machines the functionality can exist but be
6474unconfigured.  Consult your system support.
6475
6476=item syswrite() on closed filehandle %s
6477
6478(W closed) The filehandle you're writing to got itself closed sometime
6479before now.  Check your control flow.
6480
6481=item C<-T> and C<-B> not implemented on filehandles
6482
6483(F) Perl can't peek at the stdio buffer of filehandles when it doesn't
6484know about your kind of stdio.  You'll have to use a filename instead.
6485
6486=item Target of goto is too deeply nested
6487
6488(F) You tried to use C<goto> to reach a label that was too deeply nested
6489for Perl to reach.  Perl is doing you a favor by refusing.
6490
6491=item telldir() attempted on invalid dirhandle %s
6492
6493(W io) The dirhandle you tried to telldir() is either closed or not really
6494a dirhandle.  Check your control flow.
6495
6496=item tell() on unopened filehandle
6497
6498(W unopened) You tried to use the tell() function on a filehandle that
6499was either never opened or has since been closed.
6500
6501=item The crypt() function is unimplemented due to excessive paranoia.
6502
6503(F) Configure couldn't find the crypt() function on your machine,
6504probably because your vendor didn't supply it, probably because they
6505think the U.S. Government thinks it's a secret, or at least that they
6506will continue to pretend that it is.  And if you quote me on that, I
6507will deny it.
6508
6509=item The experimental declared_refs feature is not enabled
6510
6511(F) To declare references to variables, as in C<my \%x>, you must first enable
6512the feature:
6513
6514    no warnings "experimental::declared_refs";
6515    use feature "declared_refs";
6516
6517=item The %s function is unimplemented
6518
6519(F) The function indicated isn't implemented on this architecture,
6520according to the probings of Configure.
6521
6522=item The private_use feature is experimental
6523
6524(S experimental::private_use) This feature is actually a hook for future
6525use.
6526
6527=item The stat preceding %s wasn't an lstat
6528
6529(F) It makes no sense to test the current stat buffer for symbolic
6530linkhood if the last stat that wrote to the stat buffer already went
6531past the symlink to get to the real file.  Use an actual filename
6532instead.
6533
6534=item The Unicode property wildcards feature is experimental
6535
6536(S experimental::uniprop_wildcards) This feature is experimental
6537and its behavior may in any future release of perl.  See
6538L<perlunicode/Wildcards in Property Values>.
6539
6540=item The 'unique' attribute may only be applied to 'our' variables
6541
6542(F) This attribute was never supported on C<my> or C<sub> declarations.
6543
6544=item This Perl can't reset CRTL environ elements (%s)
6545
6546=item This Perl can't set CRTL environ elements (%s=%s)
6547
6548(W internal) Warnings peculiar to VMS.  You tried to change or delete an
6549element of the CRTL's internal environ array, but your copy of Perl
6550wasn't built with a CRTL that contained the setenv() function.  You'll
6551need to rebuild Perl with a CRTL that does, or redefine
6552F<PERL_ENV_TABLES> (see L<perlvms>) so that the environ array isn't the
6553target of the change to
6554%ENV which produced the warning.
6555
6556=item This Perl has not been built with support for randomized hash key traversal but something called Perl_hv_rand_set().
6557
6558(F) Something has attempted to use an internal API call which
6559depends on Perl being compiled with the default support for randomized hash
6560key traversal, but this Perl has been compiled without it.  You should
6561report this warning to the relevant upstream party, or recompile perl
6562with default options.
6563
6564=item This use of my() in false conditional is no longer allowed
6565
6566(F) You used a declaration similar to C<my $x if 0>.  There
6567has been a long-standing bug in Perl that causes a lexical variable
6568not to be cleared at scope exit when its declaration includes a false
6569conditional.  Some people have exploited this bug to achieve a kind of
6570static variable.  Since we intend to fix this bug, we don't want people
6571relying on this behavior.  You can achieve a similar static effect by
6572declaring the variable in a separate block outside the function, eg
6573
6574    sub f { my $x if 0; return $x++ }
6575
6576becomes
6577
6578    { my $x; sub f { return $x++ } }
6579
6580Beginning with perl 5.10.0, you can also use C<state> variables to have
6581lexicals that are initialized only once (see L<feature>):
6582
6583    sub f { state $x; return $x++ }
6584
6585This use of C<my()> in a false conditional was deprecated beginning in
6586Perl 5.10 and became a fatal error in Perl 5.30.
6587
6588=item Timeout waiting for another thread to define \p{%s}
6589
6590(F) The first time a user-defined property
6591(L<perlunicode/User-Defined Character Properties>) is used, its
6592definition is looked up and converted into an internal form for more
6593efficient handling in subsequent uses.  There could be a race if two or
6594more threads tried to do this processing nearly simultaneously.
6595Instead, a critical section is created around this task, locking out all
6596but one thread from doing it.  This message indicates that the thread
6597that is doing the conversion is taking an unexpectedly long time.  The
6598timeout exists solely to prevent deadlock; it's long enough that the
6599system was likely thrashing and about to crash.  There is no real remedy but
6600rebooting.
6601
6602=item times not implemented
6603
6604(F) Your version of the C library apparently doesn't do times().  I
6605suspect you're not running on Unix.
6606
6607=item "-T" is on the #! line, it must also be used on the command line
6608
6609(X) The #! line (or local equivalent) in a Perl script contains
6610the B<-T> option (or the B<-t> option), but Perl was not invoked with
6611B<-T> in its command line.  This is an error because, by the time
6612Perl discovers a B<-T> in a script, it's too late to properly taint
6613everything from the environment.  So Perl gives up.
6614
6615If the Perl script is being executed as a command using the #!
6616mechanism (or its local equivalent), this error can usually be
6617fixed by editing the #! line so that the B<-%c> option is a part of
6618Perl's first argument: e.g. change C<perl -n -%c> to C<perl -%c -n>.
6619
6620If the Perl script is being executed as C<perl scriptname>, then the
6621B<-%c> option must appear on the command line: C<perl -%c scriptname>.
6622
6623=item To%s: illegal mapping '%s'
6624
6625(F) You tried to define a customized To-mapping for lc(), lcfirst,
6626uc(), or ucfirst() (or their string-inlined versions), but you
6627specified an illegal mapping.
6628See L<perlunicode/"User-Defined Character Properties">.
6629
6630=item Too deeply nested ()-groups
6631
6632(F) Your template contains ()-groups with a ridiculously deep nesting level.
6633
6634=item Too few args to syscall
6635
6636(F) There has to be at least one argument to syscall() to specify the
6637system call to call, silly dilly.
6638
6639=item Too few arguments for subroutine '%s' (got %d; expected %d)
6640
6641(F) A subroutine using a signature fewer arguments than required by the
6642signature.  The caller of the subroutine is presumably at fault.
6643
6644The message attempts to include the name of the called subroutine.  If
6645the subroutine has been aliased, the subroutine's original name will be
6646shown, regardless of what name the caller used. It will also indicate the
6647number of arguments given and the number expected.
6648
6649=item Too few arguments for subroutine '%s' (got %d; expected at least %d)
6650
6651Similar to the previous message but for subroutines that accept a variable
6652number of arguments.
6653
6654=item Too late for "-%s" option
6655
6656(X) The #! line (or local equivalent) in a Perl script contains the
6657B<-M>, B<-m> or B<-C> option.
6658
6659In the case of B<-M> and B<-m>, this is an error because those options
6660are not intended for use inside scripts.  Use the C<use> pragma instead.
6661
6662The B<-C> option only works if it is specified on the command line as
6663well (with the same sequence of letters or numbers following).  Either
6664specify this option on the command line, or, if your system supports
6665it, make your script executable and run it directly instead of passing
6666it to perl.
6667
6668=item Too late to run %s block
6669
6670(W void) A CHECK or INIT block is being defined during run time proper,
6671when the opportunity to run them has already passed.  Perhaps you are
6672loading a file with C<require> or C<do> when you should be using C<use>
6673instead.  Or perhaps you should put the C<require> or C<do> inside a
6674BEGIN block.
6675
6676=item Too many args to syscall
6677
6678(F) Perl supports a maximum of only 14 args to syscall().
6679
6680=item Too many arguments for %s
6681
6682(F) The function requires fewer arguments than you specified.
6683
6684=item Too many arguments for subroutine '%s' (got %d; expected %d)
6685
6686(F) A subroutine using a signature received more arguments than permitted
6687by the signature.  The caller of the subroutine is presumably at fault.
6688
6689The message attempts to include the name of the called subroutine. If the
6690subroutine has been aliased, the subroutine's original name will be shown,
6691regardless of what name the caller used. It will also indicate the number
6692of arguments given and the number expected.
6693
6694=item Too many arguments for subroutine '%s' (got %d; expected at most %d)
6695
6696Similar to the previous message but for subroutines that accept a variable
6697number of arguments.
6698
6699=item Too many nested open parens in regex; marked by <-- HERE in m/%s/
6700
6701(F) You have exceeded the number of open C<"("> parentheses that haven't
6702been matched by corresponding closing ones.  This limit prevents eating
6703up too much memory.  It is initially set to 1000, but may be changed by
6704setting C<${^RE_COMPILE_RECURSION_LIMIT}> to some other value.  This may
6705need to be done in a BEGIN block before the regular expression pattern
6706is compiled.
6707
6708=item Too many nested BEGIN blocks, maximum of %d allowed
6709
6710(F) You have executed code that nests too many BEGIN blocks inside of
6711each other, either explicitly as BEGIN{} or implicitly as use statements.
6712This limit defaults to a rather high number which should not be exceeded
6713in normal circumstances, and triggering likely indicates something is
6714very wrong in your code. For instance infinite recursion of eval and
6715BEGIN blocks is known to trigger this error.
6716
6717If you know that you have good reason to exceed the limit you can change
6718it by setting C<${^MAX_NESTED_EVAL_BEGIN_BLOCKS}> to a different value from
6719the default of 1000.
6720
6721=item Too many capture groups (limit is %d) in regex m/%s/
6722
6723(F) You have too many capture groups in your regex pattern. You need to rework
6724your pattern to use less capture groups.
6725
6726=item Too many )'s
6727
6728(A) You've accidentally run your script through B<csh> instead of Perl.
6729Check the #! line, or manually feed your script into Perl yourself.
6730
6731=item Too many ('s
6732
6733(A) You've accidentally run your script through B<csh> instead of Perl.
6734Check the #! line, or manually feed your script into Perl yourself.
6735
6736=item Trailing \ in regex m/%s/
6737
6738(F) The regular expression ends with an unbackslashed backslash.
6739Backslash it.   See L<perlre>.
6740
6741=item Transliteration pattern not terminated
6742
6743(F) The lexer couldn't find the interior delimiter of a tr/// or tr[][]
6744or y/// or y[][] construct.  Missing the leading C<$> from variables
6745C<$tr> or C<$y> may cause this error.
6746
6747=item Transliteration replacement not terminated
6748
6749(F) The lexer couldn't find the final delimiter of a tr///, tr[][],
6750y/// or y[][] construct.
6751
6752=item Treating %s::INIT block as BEGIN block as workaround
6753
6754(S) A package is using an old version of C<Module::Install::DSL> to
6755install, which makes unsafe assumptions about when INIT blocks will be
6756called. Because C<Module::Install::DSL> is used to install other modules
6757and is difficult to upgrade we have a special workaround in place to
6758deal with this. Unless you are a maintainer of an affected module you
6759can ignore this warning. We emit it only as a sanity check.
6760
6761=item '%s' trapped by operation mask
6762
6763(F) You tried to use an operator from a Safe compartment in which it's
6764disallowed.  See L<Safe>.
6765
6766=item truncate not implemented
6767
6768(F) Your machine doesn't implement a file truncation mechanism that
6769Configure knows about.
6770
6771=item try/catch/finally is experimental
6772
6773(S experimental::try) This warning is emitted if you use the C<try> and
6774C<catch> syntax with a C<finally> block. This syntax is currently experimental
6775and its behaviour may change in future releases of Perl.
6776
6777=item Type of arg %d to &CORE::%s must be %s
6778
6779(F) The subroutine in question in the CORE package requires its argument
6780to be a hard reference to data of the specified type.  Overloading is
6781ignored, so a reference to an object that is not the specified type, but
6782nonetheless has overloading to handle it, will still not be accepted.
6783
6784=item Type of arg %d to %s must be %s (not %s)
6785
6786(F) This function requires the argument in that position to be of a
6787certain type.  Arrays must be @NAME or C<@{EXPR}>.  Hashes must be
6788%NAME or C<%{EXPR}>.  No implicit dereferencing is allowed--use the
6789{EXPR} forms as an explicit dereference.  See L<perlref>.
6790
6791=item umask not implemented
6792
6793(F) Your machine doesn't implement the umask function and you tried to
6794use it to restrict permissions for yourself (EXPR & 0700).
6795
6796=item UNIVERSAL does not export anything
6797
6798(F) You asked UNIVERSAL to export something, but UNIVERSAL is the
6799base class for all classes and contains no exportable symbols.
6800
6801=item Unbalanced context: %d more PUSHes than POPs
6802
6803(S internal) The exit code detected an internal inconsistency in how
6804many execution contexts were entered and left.
6805
6806=item Unbalanced saves: %d more saves than restores
6807
6808(S internal) The exit code detected an internal inconsistency in how
6809many values were temporarily localized.
6810
6811=item Unbalanced scopes: %d more ENTERs than LEAVEs
6812
6813(S internal) The exit code detected an internal inconsistency in how
6814many blocks were entered and left.
6815
6816=item Unbalanced string table refcount: (%d) for "%s"
6817
6818(S internal) On exit, Perl found some strings remaining in the shared
6819string table used for copy on write and for hash keys.  The entries
6820should have been freed, so this indicates a bug somewhere.
6821
6822=item Unbalanced tmps: %d more allocs than frees
6823
6824(S internal) The exit code detected an internal inconsistency in how
6825many mortal scalars were allocated and freed.
6826
6827=item Undefined format "%s" called
6828
6829(F) The format indicated doesn't seem to exist.  Perhaps it's really in
6830another package?  See L<perlform>.
6831
6832=item Undefined sort subroutine "%s" called
6833
6834(F) The sort comparison routine specified doesn't seem to exist.
6835Perhaps it's in a different package?  See L<perlfunc/sort>.
6836
6837=item Undefined subroutine &%s called
6838
6839(F) The subroutine indicated hasn't been defined, or if it was, it has
6840since been undefined.
6841
6842=item Undefined subroutine called
6843
6844(F) The anonymous subroutine you're trying to call hasn't been defined,
6845or if it was, it has since been undefined.
6846
6847=item Undefined subroutine in sort
6848
6849(F) The sort comparison routine specified is declared but doesn't seem
6850to have been defined yet.  See L<perlfunc/sort>.
6851
6852=item Undefined top format "%s" called
6853
6854(F) The format indicated doesn't seem to exist.  Perhaps it's really in
6855another package?  See L<perlform>.
6856
6857=item Undefined value assigned to typeglob
6858
6859(W misc) An undefined value was assigned to a typeglob, a la
6860C<*foo = undef>.  This does nothing.  It's possible that you really mean
6861C<undef *foo>.
6862
6863=item %s: Undefined variable
6864
6865(A) You've accidentally run your script through B<csh> instead of Perl.
6866Check the #! line, or manually feed your script into Perl yourself.
6867
6868=item Unescaped left brace in regex is illegal here in regex;
6869marked by S<<-- HERE> in m/%s/
6870
6871(F) The simple rule to remember, if you want to
6872match a literal C<"{"> character (U+007B C<LEFT CURLY BRACKET>) in a
6873regular expression pattern, is to escape each literal instance of it in
6874some way.  Generally easiest is to precede it with a backslash, like
6875C<"\{"> or enclose it in square brackets (C<"[{]">).  If the pattern
6876delimiters are also braces, any matching right brace (C<"}">) should
6877also be escaped to avoid confusing the parser, for example,
6878
6879 qr{abc\{def\}ghi}
6880
6881Forcing literal C<"{"> characters to be escaped enables the Perl
6882language to be extended in various ways in future releases.  To avoid
6883needlessly breaking existing code, the restriction is not enforced in
6884contexts where there are unlikely to ever be extensions that could
6885conflict with the use there of C<"{"> as a literal.  Those that are
6886not potentially ambiguous do not warn; those that are do raise a
6887non-deprecation warning.
6888
6889The contexts where no warnings or errors are raised are:
6890
6891=over 4
6892
6893=item *
6894
6895as the first character in a pattern, or following C<"^"> indicating to
6896anchor the match to the beginning of a line.
6897
6898=item *
6899
6900as the first character following a C<"|"> indicating alternation.
6901
6902=item *
6903
6904as the first character in a parenthesized grouping like
6905
6906 /foo({bar)/
6907 /foo(?:{bar)/
6908
6909=item *
6910
6911as the first character following a quantifier
6912
6913 /\s*{/
6914
6915=back
6916
6917=for comment
6918The text of the message above is mostly duplicated below (with changes)
6919to allow splain (and 'use diagnostics') to work.  Since one is fatal,
6920and one not, they can't be combined as one message.  Perhaps perldiag
6921could be enhanced to handle this case.
6922
6923=item Unescaped left brace in regex is passed through in regex; marked by S<<-- HERE> in m/%s/
6924
6925(W regexp)  The simple rule to remember, if you want to
6926match a literal C<"{"> character (U+007B C<LEFT CURLY BRACKET>) in a
6927regular expression pattern, is to escape each literal instance of it in
6928some way.  Generally easiest is to precede it with a backslash, like
6929C<"\{"> or enclose it in square brackets (C<"[{]">).  If the pattern
6930delimiters are also braces, any matching right brace (C<"}">) should
6931also be escaped to avoid confusing the parser, for example,
6932
6933 qr{abc\{def\}ghi}
6934
6935Forcing literal C<"{"> characters to be escaped enables the Perl
6936language to be extended in various ways in future releases.  To avoid
6937needlessly breaking existing code, the restriction is not enforced in
6938contexts where there are unlikely to ever be extensions that could
6939conflict with the use there of C<"{"> as a literal.  Those that are
6940not potentially ambiguous do not warn; those that are raise this
6941warning.  This makes sure that an inadvertent typo doesn't silently
6942cause the pattern to compile to something unintended.
6943
6944The contexts where no warnings or errors are raised are:
6945
6946=over 4
6947
6948=item *
6949
6950as the first character in a pattern, or following C<"^"> indicating to
6951anchor the match to the beginning of a line.
6952
6953=item *
6954
6955as the first character following a C<"|"> indicating alternation.
6956
6957=item *
6958
6959as the first character in a parenthesized grouping like
6960
6961 /foo({bar)/
6962 /foo(?:{bar)/
6963
6964=item *
6965
6966as the first character following a quantifier
6967
6968 /\s*{/
6969
6970=back
6971
6972=item Unescaped literal '%c' in regex; marked by <-- HERE in m/%s/
6973
6974(W regexp) (only under C<S<use re 'strict'>>)
6975
6976Within the scope of C<S<use re 'strict'>> in a regular expression
6977pattern, you included an unescaped C<}> or C<]> which was interpreted
6978literally.  These two characters are sometimes metacharacters, and
6979sometimes literals, depending on what precedes them in the
6980pattern.  This is unlike the similar C<)> which is always a
6981metacharacter unless escaped.
6982
6983This action at a distance, perhaps a large distance, can lead to Perl
6984silently misinterpreting what you meant, so when you specify that you
6985want extra checking by C<S<use re 'strict'>>, this warning is generated.
6986If you meant the character as a literal, simply confirm that to Perl by
6987preceding the character with a backslash, or make it into a bracketed
6988character class (like C<[}]>).  If you meant it as closing a
6989corresponding C<[> or C<{>, you'll need to look back through the pattern
6990to find out why that isn't happening.
6991
6992=item unexec of %s into %s failed!
6993
6994(F) The unexec() routine failed for some reason.  See your local FSF
6995representative, who probably put it there in the first place.
6996
6997=item Unexpected binary operator '%c' with no preceding operand in regex;
6998marked by S<<-- HERE> in m/%s/
6999
7000(F) You had something like this:
7001
7002 (?[ | \p{Digit} ])
7003
7004where the C<"|"> is a binary operator with an operand on the right, but
7005no operand on the left.
7006
7007=item Unexpected character in regex; marked by S<<-- HERE> in m/%s/
7008
7009(F) You had something like this:
7010
7011 (?[ z ])
7012
7013Within C<(?[ ])>, no literal characters are allowed unless they are
7014within an inner pair of square brackets, like
7015
7016 (?[ [ z ] ])
7017
7018Another possibility is that you forgot a backslash.  Perl isn't smart
7019enough to figure out what you really meant.
7020
7021=item Unexpected characters while parsing class :isa attribute: %s
7022
7023(F) You tried to specify something other than a single class name with an
7024optional trailing verison number as the value for a C<class> C<:isa>
7025attribute.  This confused the parser.
7026
7027=item Unexpected exit %u
7028
7029(S) exit() was called or the script otherwise finished gracefully when
7030C<PERL_EXIT_WARN> was set in C<PL_exit_flags>.
7031
7032=item Unexpected exit failure %d
7033
7034(S) An uncaught die() was called when C<PERL_EXIT_WARN> was set in
7035C<PL_exit_flags>.
7036
7037=item Unexpected ')' in regex; marked by S<<-- HERE> in m/%s/
7038
7039(F) You had something like this:
7040
7041 (?[ ( \p{Digit} + ) ])
7042
7043The C<")"> is out-of-place.  Something apparently was supposed to
7044be combined with the digits, or the C<"+"> shouldn't be there, or
7045something like that.  Perl can't figure out what was intended.
7046
7047=item Unexpected ']' with no following ')' in (?[... in regex; marked by
7048<-- HERE in m/%s/
7049
7050(F) While parsing an extended character class a ']' character was
7051encountered at a point in the definition where the only legal use of
7052']' is to close the character class definition as part of a '])', you
7053may have forgotten the close paren, or otherwise confused the parser.
7054
7055=item Unexpected '(' with no preceding operator in regex; marked by
7056S<<-- HERE> in m/%s/
7057
7058(F) You had something like this:
7059
7060 (?[ \p{Digit} ( \p{Lao} + \p{Thai} ) ])
7061
7062There should be an operator before the C<"(">, as there's
7063no indication as to how the digits are to be combined
7064with the characters in the Lao and Thai scripts.
7065
7066=item Unicode non-character U+%X is not recommended for open interchange
7067
7068(S nonchar) Certain codepoints, such as U+FFFE and U+FFFF, are
7069defined by the Unicode standard to be non-characters.  Those
7070are legal codepoints, but are reserved for internal use; so,
7071applications shouldn't attempt to exchange them.  An application
7072may not be expecting any of these characters at all, and receiving
7073them may lead to bugs.  If you know what you are doing you can
7074turn off this warning by C<no warnings 'nonchar';>.
7075
7076This is not really a "severe" error, but it is supposed to be
7077raised by default even if warnings are not enabled, and currently
7078the only way to do that in Perl is to mark it as serious.
7079
7080=item Unicode property wildcard not terminated
7081
7082(F) A Unicode property wildcard looks like a delimited regular
7083expression pattern (all within the braces of the enclosing C<\p{...}>.
7084The closing delimtter to match the opening one was not found.  If the
7085opening one is escaped by preceding it with a backslash, the closing one
7086must also be so escaped.
7087
7088=item Unicode string properties are not implemented in (?[...]) in
7089regex; marked by <-- HERE in m/%s/
7090
7091(F) A Unicode string property is one which expands to a sequence of
7092multiple characters.  An example is C<\p{name=KATAKANA LETTER AINU P}>,
7093which consists of the sequence C<\N{KATAKANA LETTER SMALL H}>
7094followed by C<\N{COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK}>.
7095Extended character classes, C<(?[...])> currently cannot handle these.
7096
7097=item Unicode surrogate U+%X is illegal in UTF-8
7098
7099(S surrogate) You had a UTF-16 surrogate in a context where they are
7100not considered acceptable.  These code points, between U+D800 and
7101U+DFFF (inclusive), are used by Unicode only for UTF-16.  However, Perl
7102internally allows all unsigned integer code points (up to the size limit
7103available on your platform), including surrogates.  But these can cause
7104problems when being input or output, which is likely where this message
7105came from.  If you really really know what you are doing you can turn
7106off this warning by C<no warnings 'surrogate';>.
7107
7108=item Unimplemented
7109
7110(F) In Perl 5.12 and above, you have executed an
7111L<ellipsis statement|perlsyn/"The Ellipsis Statement">.  This is a
7112bare C<...;>, meant to be used to allow you to outline code that
7113is to be written, but is not complete, similar to the following:
7114
7115    sub not_done_yet {
7116      my($self, $arg1, $arg2) = @_;
7117      ...
7118    }
7119
7120If C<not_done_yet()> is called, Perl will die with an C<Unimplemented> error
7121at the line containing C<...>.
7122
7123=item Unknown charname '%s'
7124
7125(F) The name you used inside C<\N{}> is unknown to Perl.  Check the
7126spelling.  You can say C<use charnames ":loose"> to not have to be
7127so precise about spaces, hyphens, and capitalization on standard Unicode
7128names.  (Any custom aliases that have been created must be specified
7129exactly, regardless of whether C<:loose> is used or not.)  This error may
7130also happen if the C<\N{}> is not in the scope of the corresponding
7131C<S<use charnames>>.
7132
7133=item Unknown '(*...)' construct '%s' in regex; marked by <-- HERE in m/%s/
7134
7135(F) The C<(*> was followed by something that the regular expression
7136compiler does not recognize.  Check your spelling.
7137
7138=item Unknown error
7139
7140(P) Perl was about to print an error message in C<$@>, but the C<$@> variable
7141did not exist, even after an attempt to create it.
7142
7143=item Unknown locale category %d
7144
7145=item Unknown locale category %d; can't set it to %s
7146
7147(W locale) You used a locale category that perl doesn't recognize, so it
7148cannot carry out your request.  Check that you are using a valid
7149category.  If so, see L<perllocale/Multi-threaded> for advice on
7150reporting this as a bug, and for modifying perl locally to accommodate
7151your needs.
7152
7153=item Unknown open() mode '%s'
7154
7155(F) The second argument of 3-argument open() is not among the list
7156of valid modes: C<< < >>, C<< > >>, C<<< >> >>>, C<< +< >>,
7157C<< +> >>, C<<< +>> >>>, C<-|>, C<|->, C<< <& >>, C<< >& >>.
7158
7159=item Unknown PerlIO layer "%s"
7160
7161(W layer) An attempt was made to push an unknown layer onto the Perl I/O
7162system.  (Layers take care of transforming data between external and
7163internal representations.)  Note that some layers, such as C<mmap>,
7164are not supported in all environments.  If your program didn't
7165explicitly request the failing operation, it may be the result of the
7166value of the environment variable PERLIO.
7167
7168=item Unknown process %x sent message to prime_env_iter: %s
7169
7170(P) An error peculiar to VMS.  Perl was reading values for %ENV before
7171iterating over it, and someone else stuck a message in the stream of
7172data Perl expected.  Someone's very confused, or perhaps trying to
7173subvert Perl's population of %ENV for nefarious purposes.
7174
7175=item Unknown regexp modifier "/%s"
7176
7177(F) Alphanumerics immediately following the closing delimiter
7178of a regular expression pattern are interpreted by Perl as modifier
7179flags for the regex.  One of the ones you specified is invalid.  One way
7180this can happen is if you didn't put in white space between the end of
7181the regex and a following alphanumeric operator:
7182
7183 if ($x =~ /foo/and $bar == 3) { ... }
7184
7185The C<"a"> is a valid modifier flag, but the C<"n"> is not, and raises
7186this error.  Likely what was meant instead was:
7187
7188 if ($x =~ /foo/ and $bar == 3) { ... }
7189
7190=item Unknown "re" subpragma '%s' (known ones are: %s)
7191
7192(W) You tried to use an unknown subpragma of the "re" pragma.
7193
7194=item Unknown switch condition (?(...)) in regex; marked by S<<-- HERE> in
7195m/%s/
7196
7197(F) The condition part of a (?(condition)if-clause|else-clause) construct
7198is not known.  The condition must be one of the following:
7199
7200 (1) (2) ...            true if 1st, 2nd, etc., capture matched
7201 (<NAME>) ('NAME')      true if named capture matched
7202 (?=...) (?<=...)       true if subpattern matches
7203 (*pla:...) (*plb:...)  true if subpattern matches; also
7204                             (*positive_lookahead:...)
7205                             (*positive_lookbehind:...)
7206 (*nla:...) (*nlb:...)  true if subpattern fails to match; also
7207                             (*negative_lookahead:...)
7208                             (*negative_lookbehind:...)
7209 (?{ CODE })            true if code returns a true value
7210 (R)                    true if evaluating inside recursion
7211 (R1) (R2) ...          true if directly inside capture group 1, 2,
7212                             etc.
7213 (R&NAME)               true if directly inside named capture
7214 (DEFINE)               always false; for defining named subpatterns
7215
7216The S<<-- HERE> shows whereabouts in the regular expression the problem was
7217discovered.  See L<perlre>.
7218
7219=item Unknown Unicode option letter '%c'
7220
7221(F) You specified an unknown Unicode option.  See
7222L<perlrun|perlrun/-C [numberE<sol>list]> documentation of the C<-C> switch
7223for the list of known options.
7224
7225=item Unknown Unicode option value %d
7226
7227(F) You specified an unknown Unicode option.  See
7228L<perlrun|perlrun/-C [numberE<sol>list]> documentation of the C<-C> switch
7229for the list of known options.
7230
7231=item Unknown user-defined property name \p{%s}
7232
7233(F) You specified to use a property within the C<\p{...}> which was a
7234syntactically valid user-defined property, but no definition was found
7235for it by the time one was required to proceed.  Check your spelling.
7236See L<perlunicode/User-Defined Character Properties>.
7237
7238=item Unknown verb pattern '%s' in regex; marked by S<<-- HERE> in m/%s/
7239
7240(F) You either made a typo or have incorrectly put a C<*> quantifier
7241after an open brace in your pattern.  Check the pattern and review
7242L<perlre> for details on legal verb patterns.
7243
7244=item Unknown warnings category '%s'
7245
7246(F) An error issued by the C<warnings> pragma.  You specified a warnings
7247category that is unknown to perl at this point.
7248
7249Note that if you want to enable a warnings category registered by a
7250module (e.g. C<use warnings 'File::Find'>), you must have loaded this
7251module first.
7252
7253=item Unmatched [ in regex; marked by S<<-- HERE> in m/%s/
7254
7255(F) The brackets around a character class must match.  If you wish to
7256include a closing bracket in a character class, backslash it or put it
7257first.  The S<<-- HERE> shows whereabouts in the regular expression the
7258problem was discovered.  See L<perlre>.
7259
7260=item Unmatched ( in regex; marked by S<<-- HERE> in m/%s/
7261
7262=item Unmatched ) in regex; marked by S<<-- HERE> in m/%s/
7263
7264(F) Unbackslashed parentheses must always be balanced in regular
7265expressions.  If you're a vi user, the % key is valuable for finding
7266the matching parenthesis.  The S<<-- HERE> shows whereabouts in the
7267regular expression the problem was discovered.  See L<perlre>.
7268
7269=item Unmatched right %s bracket
7270
7271(F) The lexer counted more closing curly or square brackets than opening
7272ones, so you're probably missing a matching opening bracket.  As a
7273general rule, you'll find the missing one (so to speak) near the place
7274you were last editing.
7275
7276=item Unquoted string "%s" may clash with future reserved word
7277
7278(W reserved) You used a bareword that might someday be claimed as a
7279reserved word.  It's best to put such a word in quotes, or capitalize it
7280somehow, or insert an underbar into it.  You might also declare it as a
7281subroutine.
7282
7283=item Unrecognized character %s; marked by S<<-- HERE> after %s near column
7284%d
7285
7286(F) The Perl parser has no idea what to do with the specified character
7287in your Perl script (or eval) near the specified column.  Perhaps you
7288tried  to run a compressed script, a binary program, or a directory as
7289a Perl program.
7290
7291=item Unrecognized class attribute %s
7292
7293(F) You attempted to add a named attribute to a C<class> definition, but
7294perl does not recognise the name of the requested attribute.
7295
7296=item Unrecognized escape \%c in character class in regex; marked by
7297S<<-- HERE> in m/%s/
7298
7299(F) You used a backslash-character combination which is not
7300recognized by Perl inside character classes.  This is a fatal
7301error when the character class is used within C<(?[ ])>.
7302
7303=item Unrecognized escape \%c in character class passed through in regex;
7304marked by S<<-- HERE> in m/%s/
7305
7306(W regexp) You used a backslash-character combination which is not
7307recognized by Perl inside character classes.  The character was
7308understood literally, but this may change in a future version of Perl.
7309The S<<-- HERE> shows whereabouts in the regular expression the
7310escape was discovered.
7311
7312=item Unrecognized escape \%c passed through
7313
7314(W misc) You used a backslash-character combination which is not
7315recognized by Perl.  The character was understood literally, but this may
7316change in a future version of Perl.
7317
7318=item Unrecognized escape \%s passed through in regex; marked by
7319S<<-- HERE> in m/%s/
7320
7321(W regexp) You used a backslash-character combination which is not
7322recognized by Perl.  The character(s) were understood literally, but
7323this may change in a future version of Perl.  The S<<-- HERE> shows
7324whereabouts in the regular expression the escape was discovered.
7325
7326=item Unrecognized field attribute %s
7327
7328(F) You attempted to add a named attribute to a C<field> definition, but
7329perl does not recognise the name of the requested attribute.
7330
7331=item Unrecognised parameters for "%s" constructor: %s
7332
7333(F) You called new on a class but supplied a parameter name that
7334didn't match a class field name.
7335
7336=item Unrecognized signal name "%s"
7337
7338(F) You specified a signal name to the kill() function that was not
7339recognized.  Say C<kill -l> in your shell to see the valid signal names
7340on your system.
7341
7342=item Unrecognized switch: -%s  (-h will show valid options)
7343
7344(F) You specified an illegal option to Perl.  Don't do that.  (If you
7345think you didn't do that, check the #! line to see if it's supplying the
7346bad switch on your behalf.)
7347
7348=item Unsuccessful %s on filename containing newline
7349
7350(W newline) A file operation was attempted on a filename, and that
7351operation failed, PROBABLY because the filename contained a newline,
7352PROBABLY because you forgot to chomp() it off.  See L<perlfunc/chomp>.
7353
7354=item Unsupported directory function "%s" called
7355
7356(F) Your machine doesn't support opendir() and readdir().
7357
7358=item Unsupported function %s
7359
7360(F) This machine doesn't implement the indicated function, apparently.
7361At least, Configure doesn't think so.
7362
7363=item Unsupported function fork
7364
7365(F) Your version of executable does not support forking.
7366
7367Note that under some systems, like OS/2, there may be different flavors
7368of Perl executables, some of which may support fork, some not.  Try
7369changing the name you call Perl by to C<perl_>, C<perl__>, and so on.
7370
7371=item Unsupported script encoding %s
7372
7373(F) Your program file begins with a Unicode Byte Order Mark (BOM) which
7374declares it to be in a Unicode encoding that Perl cannot read.
7375
7376=item Unsupported socket function "%s" called
7377
7378(F) Your machine doesn't support the Berkeley socket mechanism, or at
7379least that's what Configure thought.
7380
7381=item Unterminated '(*...' argument in regex; marked by <-- HERE in m/%s/
7382
7383(F) You used a pattern of the form C<(*...:...)> but did not terminate
7384the pattern with a C<)>.  Fix the pattern and retry.
7385
7386=item Unterminated attribute list
7387
7388(F) The lexer found something other than a simple identifier at the
7389start of an attribute, and it wasn't a semicolon or the start of a
7390block.  Perhaps you terminated the parameter list of the previous
7391attribute too soon.  See L<attributes>.
7392
7393=item Unterminated attribute parameter in attribute list
7394
7395(F) The lexer saw an opening (left) parenthesis character while parsing
7396an attribute list, but the matching closing (right) parenthesis
7397character was not found.  You may need to add (or remove) a backslash
7398character to get your parentheses to balance.  See L<attributes>.
7399
7400=item Unterminated compressed integer
7401
7402(F) An argument to unpack("w",...) was incompatible with the BER
7403compressed integer format and could not be converted to an integer.
7404See L<perlfunc/pack>.
7405
7406=item Unterminated '(*...' construct in regex; marked by <-- HERE in m/%s/
7407
7408(F) You used a pattern of the form C<(*...)> but did not terminate
7409the pattern with a C<)>.  Fix the pattern and retry.
7410
7411=item Unterminated delimiter for here document
7412
7413(F) This message occurs when a here document label has an initial
7414quotation mark but the final quotation mark is missing.  Perhaps
7415you wrote:
7416
7417    <<"foo
7418
7419instead of:
7420
7421    <<"foo"
7422
7423=item Unterminated \g... pattern in regex; marked by S<<-- HERE> in m/%s/
7424
7425=item Unterminated \g{...} pattern in regex; marked by S<<-- HERE> in m/%s/
7426
7427(F) In a regular expression, you had a C<\g> that wasn't followed by a
7428proper group reference.  In the case of C<\g{>, the closing brace is
7429missing; otherwise the C<\g> must be followed by an integer.  Fix the
7430pattern and retry.
7431
7432=item Unterminated <> operator
7433
7434(F) The lexer saw a left angle bracket in a place where it was expecting
7435a term, so it's looking for the corresponding right angle bracket, and
7436not finding it.  Chances are you left some needed parentheses out
7437earlier in the line, and you really meant a "less than".
7438
7439=item Unterminated verb pattern argument in regex; marked by S<<-- HERE> in
7440m/%s/
7441
7442(F) You used a pattern of the form C<(*VERB:ARG)> but did not terminate
7443the pattern with a C<)>.  Fix the pattern and retry.
7444
7445=item Unterminated verb pattern in regex; marked by S<<-- HERE> in m/%s/
7446
7447(F) You used a pattern of the form C<(*VERB)> but did not terminate
7448the pattern with a C<)>.  Fix the pattern and retry.
7449
7450=item untie attempted while %d inner references still exist
7451
7452(W untie) A copy of the object returned from C<tie> (or C<tied>) was
7453still valid when C<untie> was called.
7454
7455=item Usage: POSIX::%s(%s)
7456
7457(F) You called a POSIX function with incorrect arguments.
7458See L<POSIX/FUNCTIONS> for more information.
7459
7460=item Usage: Win32::%s(%s)
7461
7462(F) You called a Win32 function with incorrect arguments.
7463See L<Win32> for more information.
7464
7465=item $[ used in %s (did you mean $] ?)
7466
7467(W syntax) You used C<$[> in a comparison, such as:
7468
7469    if ($[ > 5.006) {
7470	...
7471    }
7472
7473You probably meant to use C<$]> instead.  C<$[> is the base for indexing
7474arrays.  C<$]> is the Perl version number in decimal.
7475
7476=item Use "%s" instead of "%s"
7477
7478(F) The second listed construct is no longer legal.  Use the first one
7479instead.
7480
7481=item Useless assignment to a temporary
7482
7483(W misc) You assigned to an lvalue subroutine, but what
7484the subroutine returned was a temporary scalar about to
7485be discarded, so the assignment had no effect.
7486
7487=item Useless (?-%s) - don't use /%s modifier in regex; marked by
7488S<<-- HERE> in m/%s/
7489
7490(W regexp) You have used an internal modifier such as (?-o) that has no
7491meaning unless removed from the entire regexp:
7492
7493    if ($string =~ /(?-o)$pattern/o) { ... }
7494
7495must be written as
7496
7497    if ($string =~ /$pattern/) { ... }
7498
7499The S<<-- HERE> shows whereabouts in the regular expression the problem was
7500discovered.  See L<perlre>.
7501
7502=item Useless localization of %s
7503
7504(W syntax) The localization of lvalues such as C<local($x=10)> is legal,
7505but in fact the local() currently has no effect.  This may change at
7506some point in the future, but in the meantime such code is discouraged.
7507
7508=item Useless (?%s) - use /%s modifier in regex; marked by S<<-- HERE> in
7509m/%s/
7510
7511(W regexp) You have used an internal modifier such as (?o) that has no
7512meaning unless applied to the entire regexp:
7513
7514    if ($string =~ /(?o)$pattern/) { ... }
7515
7516must be written as
7517
7518    if ($string =~ /$pattern/o) { ... }
7519
7520The S<<-- HERE> shows whereabouts in the regular expression the problem was
7521discovered.  See L<perlre>.
7522
7523=item Useless use of attribute "const"
7524
7525(W misc) The C<const> attribute has no effect except
7526on anonymous closure prototypes.  You applied it to
7527a subroutine via L<attributes.pm|attributes>.  This is only useful
7528inside an attribute handler for an anonymous subroutine.
7529
7530=item Useless use of /d modifier in transliteration operator
7531
7532(W misc) You have used the /d modifier where the searchlist has the
7533same length as the replacelist.  See L<perlop> for more information
7534about the /d modifier.
7535
7536=item Useless use of \E
7537
7538(W misc) You have a \E in a double-quotish string without a C<\U>,
7539C<\L> or C<\Q> preceding it.
7540
7541=item Useless use of greediness modifier '%c' in regex; marked by S<<-- HERE> in m/%s/
7542
7543(W regexp) You specified something like these:
7544
7545 qr/a{3}?/
7546 qr/b{1,1}+/
7547
7548The C<"?"> and C<"+"> don't have any effect, as they modify whether to
7549match more or fewer when there is a choice, and by specifying to match
7550exactly a given number, there is no room left for a choice.
7551
7552=item Useless use of %s in scalar context
7553
7554(W scalar) You did something whose only interesting return value is a
7555list without a side effect in scalar context, which does not accept a
7556list.
7557
7558For example
7559
7560    my $x = sort @y;
7561
7562This is not very useful, and perl currently optimizes this away.
7563
7564=item Useless use of %s in void context
7565
7566(W void) You did something without a side effect in a context that does
7567nothing with the return value, such as a statement that doesn't return a
7568value from a block, or the left side of a scalar comma operator.  Very
7569often this points not to stupidity on your part, but a failure of Perl
7570to parse your program the way you thought it would.  For example, you'd
7571get this if you mixed up your C precedence with Python precedence and
7572said
7573
7574    $one, $two = 1, 2;
7575
7576when you meant to say
7577
7578    ($one, $two) = (1, 2);
7579
7580Another common error is to use ordinary parentheses to construct a list
7581reference when you should be using square or curly brackets, for
7582example, if you say
7583
7584    $array = (1,2);
7585
7586when you should have said
7587
7588    $array = [1,2];
7589
7590The square brackets explicitly turn a list value into a scalar value,
7591while parentheses do not.  So when a parenthesized list is evaluated in
7592a scalar context, the comma is treated like C's comma operator, which
7593throws away the left argument, which is not what you want.  See
7594L<perlref> for more on this.
7595
7596This warning will not be issued for numerical constants equal to 0 or 1
7597since they are often used in statements like
7598
7599    1 while sub_with_side_effects();
7600
7601String constants that would normally evaluate to 0 or 1 are warned
7602about.
7603
7604=item Useless use of (?-p) in regex; marked by S<<-- HERE> in m/%s/
7605
7606(W regexp) The C<p> modifier cannot be turned off once set.  Trying to do
7607so is futile.
7608
7609=item Useless use of "re" pragma
7610
7611(W) You did C<use re;> without any arguments.  That isn't very useful.
7612
7613=item Useless use of %s with no values
7614
7615(W syntax) You used the push() or unshift() function with no arguments
7616apart from the array, like C<push(@x)> or C<unshift(@foo)>.  That won't
7617usually have any effect on the array, so is completely useless.  It's
7618possible in principle that push(@tied_array) could have some effect
7619if the array is tied to a class which implements a PUSH method.  If so,
7620you can write it as C<push(@tied_array,())> to avoid this warning.
7621
7622=item "use" not allowed in expression
7623
7624(F) The "use" keyword is recognized and executed at compile time, and
7625returns no useful value.  See L<perlmod>.
7626
7627=item Use of @_ in %s with signatured subroutine is experimental
7628
7629(S experimental::args_array_with_signatures) An expression involving the
7630C<@_> arguments array was found in a subroutine that uses a signature.
7631This is experimental because the interaction between the arguments
7632array and parameter handling via signatures is not guaranteed to remain
7633stable in any future version of Perl, and such code should be avoided.
7634
7635=item Use of bare << to mean <<"" is forbidden
7636
7637(F) You are now required to use the explicitly quoted form if you wish
7638to use an empty line as the terminator of the here-document.
7639
7640Use of a bare terminator was deprecated in Perl 5.000, and is a fatal
7641error as of Perl 5.28.
7642
7643=item Use of /c modifier is meaningless in s///
7644
7645(W regexp) You used the /c modifier in a substitution.  The /c
7646modifier is not presently meaningful in substitutions.
7647
7648=item Use of /c modifier is meaningless without /g
7649
7650(W regexp) You used the /c modifier with a regex operand, but didn't
7651use the /g modifier.  Currently, /c is meaningful only when /g is
7652used.  (This may change in the future.)
7653
7654=item Use of code point 0x%s is not allowed; the permissible max is 0x%X
7655
7656=item Use of code point 0x%s is not allowed; the permissible max is 0x%X
7657in regex; marked by <-- HERE in m/%s/
7658
7659(F) You used a code point that is not allowed, because it is too large.
7660Unicode only allows code points up to 0x10FFFF, but Perl allows much
7661larger ones. Earlier versions of Perl allowed code points above IV_MAX
7662(0x7FFFFFF on 32-bit platforms, 0x7FFFFFFFFFFFFFFF on 64-bit platforms),
7663however, this could possibly break the perl interpreter in some constructs,
7664including causing it to hang in a few cases.
7665
7666If your code is to run on various platforms, keep in mind that the upper
7667limit depends on the platform.  It is much larger on 64-bit word sizes
7668than 32-bit ones.
7669
7670The use of out of range code points was deprecated in Perl 5.24, and
7671became a fatal error in Perl 5.28.
7672
7673=item Use of each() on hash after insertion without resetting hash iterator results in undefined behavior
7674
7675(S internal) The behavior of C<each()> after insertion is undefined;
7676it may skip items, or visit items more than once.  Consider using
7677C<keys()> instead of C<each()>.
7678
7679=item Use of := for an empty attribute list is not allowed
7680
7681(F) The construction C<my $x := 42> used to parse as equivalent to
7682C<my $x : = 42> (applying an empty attribute list to C<$x>).
7683This construct was deprecated in 5.12.0, and has now been made a syntax
7684error, so C<:=> can be reclaimed as a new operator in the future.
7685
7686If you need an empty attribute list, for example in a code generator, add
7687a space before the C<=>.
7688
7689=item Use of %s for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale
7690
7691(W locale)  You are matching a regular expression using locale rules,
7692and the specified construct was encountered.  This construct is only
7693valid for UTF-8 locales, which the current locale isn't.  This doesn't
7694make sense.  Perl will continue, assuming a Unicode (UTF-8) locale, but
7695the results are likely to be wrong.
7696
7697=item Use of freed value in iteration
7698
7699(F) Perhaps you modified the iterated array within the loop?
7700This error is typically caused by code like the following:
7701
7702    @a = (3,4);
7703    @a = () for (1,2,@a);
7704
7705You are not supposed to modify arrays while they are being iterated over.
7706For speed and efficiency reasons, Perl internally does not do full
7707reference-counting of iterated items, hence deleting such an item in the
7708middle of an iteration causes Perl to see a freed value.
7709
7710=item Use of /g modifier is meaningless in split
7711
7712(W regexp) You used the /g modifier on the pattern for a C<split>
7713operator.  Since C<split> always tries to match the pattern
7714repeatedly, the C</g> has no effect.
7715
7716=item Use of "goto" to jump into a construct is deprecated
7717
7718(D deprecated::goto_construct) Using C<goto> to jump from an outer scope into an inner
7719scope is deprecated and will be removed completely in Perl 5.42.
7720
7721This was deprecated in Perl 5.12.
7722
7723=item Use of '%s' in \p{} or \P{} is deprecated because: %s
7724
7725(D deprecated::unicode_property_name) Certain properties are deprecated
7726by Unicode, and may eventually be removed from the Standard, at which
7727time Perl will follow along. In the meantime, this message is raised to
7728notify you.
7729
7730=item Use of inherited AUTOLOAD for non-method %s::%s() is no longer allowed
7731
7732(F) As an accidental feature, C<AUTOLOAD> subroutines were looked up as
7733methods (using the C<@ISA> hierarchy), even when the subroutines to be
7734autoloaded were called as plain functions (e.g. C<Foo::bar()>), not as
7735methods (e.g. C<< Foo->bar() >> or C<< $obj->bar() >>).
7736
7737This was deprecated in Perl 5.004, and was made fatal in Perl 5.28.
7738
7739=item Use of %s in printf format not supported
7740
7741(F) You attempted to use a feature of printf that is accessible from
7742only C.  This usually means there's a better way to do it in Perl.
7743
7744=item Use of '%s' is deprecated as a string delimiter
7745
7746(D deprecated::delimiter_will_be_paired) You used the given character as
7747a starting delimiter of a string outside the scope of
7748S<C<use feature 'extra_paired_delimiters'>>. This character is the
7749mirror image of another Unicode character; within the scope of that
7750feature, the two are considered a pair for delimitting strings. It is
7751planned to make that feature the default, at which point this usage
7752would become illegal; hence this warning.
7753
7754For now, you may live with this warning, or turn it off, but this code
7755will no longer compile in a future version of Perl.  Or you can turn on
7756S<C<use feature 'extra_paired_delimiters'>> and use the character that
7757is the mirror image of this one for the closing string delimiter.
7758
7759=item Use of '%s' is experimental as a string delimiter
7760
7761(S experimental::extra_paired_delimiters)   This warning is emitted if
7762you use as a string delimiter one of the non-ASCII mirror image ones
7763enabled by S<C<use feature 'extra_paired_delimiters'>>.  Simply suppress
7764the warning if you want to use the feature, but know that in doing so
7765you are taking the risk of using an experimental feature which may
7766change or be removed in a future Perl version:
7767
7768=item Use of %s is not allowed in Unicode property wildcard
7769subpatterns in regex; marked by S<<-- HERE> in m/%s/
7770
7771(F) You were using a wildcard subpattern a Unicode property value, and
7772the subpattern contained something that is illegal.  Not all regular
7773expression capabilities are legal in such subpatterns, and this is one.
7774Rewrite your subppattern to not use the offending construct.
7775See L<perlunicode/Wildcards in Property Values>.
7776
7777=item Use of -l on filehandle%s
7778
7779(W io) A filehandle represents an opened file, and when you opened the file
7780it already went past any symlink you are presumably trying to look for.
7781The operation returned C<undef>.  Use a filename instead.
7782
7783=item Use of reference "%s" as array index
7784
7785(W misc) You tried to use a reference as an array index; this probably
7786isn't what you mean, because references in numerical context tend
7787to be huge numbers, and so usually indicates programmer error.
7788
7789If you really do mean it, explicitly numify your reference, like so:
7790C<$array[0+$ref]>.  This warning is not given for overloaded objects,
7791however, because you can overload the numification and stringification
7792operators and then you presumably know what you are doing.
7793
7794=item Use of strings with code points over 0xFF as arguments to %s
7795operator is not allowed
7796
7797(F) You tried to use one of the string bitwise operators (C<&> or C<|> or C<^> or
7798C<~>) on a string containing a code point over 0xFF.  The string bitwise
7799operators treat their operands as strings of bytes, and values beyond
78000xFF are nonsensical in this context.
7801
7802Certain instances became fatal in Perl 5.28; others in perl 5.32.
7803
7804=item Use of strings with code points over 0xFF as arguments to vec is forbidden
7805
7806(F) You tried to use L<C<vec>|perlfunc/vec EXPR,OFFSET,BITS>
7807on a string containing a code point over 0xFF, which is nonsensical here.
7808
7809This became fatal in Perl 5.32.
7810
7811=item Use of tainted arguments in %s is deprecated
7812
7813(W taint, deprecated) You have supplied C<system()> or C<exec()> with multiple
7814arguments and at least one of them is tainted.  This used to be allowed
7815but will become a fatal error in a future version of perl.  Untaint your
7816arguments.  See L<perlsec>.
7817
7818=item Use of unassigned code point or non-standalone grapheme for a
7819delimiter is not allowed
7820
7821(F)
7822A grapheme is what appears to a native-speaker of a language to be a
7823character.  In Unicode (and hence Perl) a grapheme may actually be
7824several adjacent characters that together form a complete grapheme.  For
7825example, there can be a base character, like "R" and an accent, like a
7826circumflex "^", that appear when displayed to be a single character with
7827the circumflex hovering over the "R".  Perl currently allows things like
7828that circumflex to be delimiters of strings, patterns, I<etc>.  When
7829displayed, the circumflex would look like it belongs to the character
7830just to the left of it.  In order to move the language to be able to
7831accept graphemes as delimiters, we cannot allow the use of
7832delimiters which aren't graphemes by themselves.  Also, a delimiter must
7833already be assigned (or known to be never going to be assigned) to try
7834to future-proof code, for otherwise code that works today would fail to
7835compile if the currently unassigned delimiter ends up being something
7836that isn't a stand-alone grapheme.  Because Unicode is never going to
7837assign
7838L<non-character code points|perlunicode/Noncharacter code points>, nor
7839L<code points that are above the legal Unicode maximum|
7840perlunicode/Beyond Unicode code points>, those can be delimiters, and
7841their use is legal.
7842
7843=item Use of uninitialized value%s
7844
7845(W uninitialized) An undefined value was used as if it were already
7846defined.  It was interpreted as a "" or a 0, but maybe it was a mistake.
7847To suppress this warning assign a defined value to your variables.
7848
7849To help you figure out what was undefined, perl will try to tell you
7850the name of the variable (if any) that was undefined.  In some cases
7851it cannot do this, so it also tells you what operation you used the
7852undefined value in.  Note, however, that perl optimizes your program
7853and the operation displayed in the warning may not necessarily appear
7854literally in your program.  For example, C<"that $foo"> is usually
7855optimized into C<"that " . $foo>, and the warning will refer to the
7856C<concatenation (.)> operator, even though there is no C<.> in
7857your program.
7858
7859=item "use re 'strict'" is experimental
7860
7861(S experimental::re_strict) The things that are different when a regular
7862expression pattern is compiled under C<'strict'> are subject to change
7863in future Perl releases in incompatible ways.  This means that a pattern
7864that compiles today may not in a future Perl release.  This warning is
7865to alert you to that risk.
7866
7867=item use VERSION is not permitted while another use VERSION of 5.39 or above is in scope
7868
7869(F) Once you have a C<use VERSION> declaration that calls for a Perl version
7870of at least 5.39, you cannot have a subsequent one while the first is visible,
7871even if it requests a later version.
7872
7873=item use VERSION of 5.39 or above is not permitted while another use VERSION is in scope
7874
7875(F) Once you have a C<use VERSION> declaration in scope, you cannot have a
7876subsequent one that calls for a Perl version of at least 5.39 while the first
7877is visible.
7878
7879=item Use \x{...} for more than two hex characters in regex; marked by
7880S<<-- HERE> in m/%s/
7881
7882(F) In a regular expression, you said something like
7883
7884 (?[ [ \xBEEF ] ])
7885
7886Perl isn't sure if you meant this
7887
7888 (?[ [ \x{BEEF} ] ])
7889
7890or if you meant this
7891
7892 (?[ [ \x{BE} E F ] ])
7893
7894You need to add either braces or blanks to disambiguate.
7895
7896=item Using just the first character returned by \N{} in character class in
7897regex; marked by S<<-- HERE> in m/%s/
7898
7899(W regexp) Named Unicode character escapes C<(\N{...})> may return
7900a multi-character sequence.  Even though a character class is
7901supposed to match just one character of input, perl will match
7902the whole thing correctly, except when the class is inverted
7903(C<[^...]>), or the escape is the beginning or final end point of
7904a range.  For these, what should happen isn't clear at all.  In
7905these circumstances, Perl discards all but the first character
7906of the returned sequence, which is not likely what you want.
7907
7908=item Using just the single character results returned by \p{} in
7909(?[...]) in regex; marked by S<<-- HERE> in m/%s/
7910
7911(W regexp) Extended character classes currently cannot handle operands
7912that evaluate to more than one character.  These are removed from the
7913results of the expansion of the C<\p{}>.
7914
7915This situation can happen, for example, in
7916
7917 (?[ \p{name=/KATAKANA/} ])
7918
7919"KATAKANA LETTER AINU P" is a legal Unicode name (technically a "named
7920sequence"), but it is actually two characters.  The above expression
7921with match only the Unicode names containing KATAKANA that represent
7922single characters.
7923
7924=item Using /u for '%s' instead of /%s in regex; marked by S<<-- HERE> in m/%s/
7925
7926(W regexp) You used a Unicode boundary (C<\b{...}> or C<\B{...}>) in a
7927portion of a regular expression where the character set modifiers C</a>
7928or C</aa> are in effect.  These two modifiers indicate an ASCII
7929interpretation, and this doesn't make sense for a Unicode definition.
7930The generated regular expression will compile so that the boundary uses
7931all of Unicode.  No other portion of the regular expression is affected.
7932
7933=item Using !~ with %s doesn't make sense
7934
7935(F) Using the C<!~> operator with C<s///r>, C<tr///r> or C<y///r> is
7936currently reserved for future use, as the exact behavior has not
7937been decided.  (Simply returning the boolean opposite of the
7938modified string is usually not particularly useful.)
7939
7940=item UTF-16 surrogate U+%X
7941
7942(S surrogate) You had a UTF-16 surrogate in a context where they are
7943not considered acceptable.  These code points, between U+D800 and
7944U+DFFF (inclusive), are used by Unicode only for UTF-16.  However, Perl
7945internally allows all unsigned integer code points (up to the size limit
7946available on your platform), including surrogates.  But these can cause
7947problems when being input or output, which is likely where this message
7948came from.  If you really really know what you are doing you can turn
7949off this warning by C<no warnings 'surrogate';>.
7950
7951=item Value of %s can be "0"; test with defined()
7952
7953(W misc) In a conditional expression, you used <HANDLE>, <*> (glob),
7954C<each()>, or C<readdir()> as a boolean value.  Each of these constructs
7955can return a value of "0"; that would make the conditional expression
7956false, which is probably not what you intended.  When using these
7957constructs in conditional expressions, test their values with the
7958C<defined> operator.
7959
7960=item Value of CLI symbol "%s" too long
7961
7962(W misc) A warning peculiar to VMS.  Perl tried to read the value of an
7963%ENV element from a CLI symbol table, and found a resultant string
7964longer than 1024 characters.  The return value has been truncated to
79651024 characters.
7966
7967=item Variable "%s" is not available
7968
7969(W closure) During compilation, an inner named subroutine or eval is
7970attempting to capture an outer lexical that is not currently available.
7971This can happen for one of two reasons.  First, the outer lexical may be
7972declared in an outer anonymous subroutine that has not yet been created.
7973(Remember that named subs are created at compile time, while anonymous
7974subs are created at run-time.)  For example,
7975
7976    sub { my $x; sub f { $x } }
7977
7978At the time that f is created, it can't capture the current value of $x,
7979since the anonymous subroutine hasn't been created yet.  Conversely,
7980the following won't give a warning since the anonymous subroutine has by
7981now been created and is live:
7982
7983    sub { my $x; eval 'sub f { $x }' }->();
7984
7985The second situation is caused by an eval accessing a variable that has
7986gone out of scope, for example,
7987
7988    sub f {
7989	my $x;
7990	sub { eval '$x' }
7991    }
7992    f()->();
7993
7994Here, when the '$x' in the eval is being compiled, f() is not currently
7995being executed, so its $x is not available for capture.
7996
7997=item Variable "%s" is not imported%s
7998
7999(S misc) With "use strict" in effect, you referred to a global variable
8000that you apparently thought was imported from another module, because
8001something else of the same name (usually a subroutine) is exported by
8002that module.  It usually means you put the wrong funny character on the
8003front of your variable. It is also possible you used an "our" variable
8004whose scope has ended.
8005
8006=item Variable length lookbehind not implemented in regex m/%s/
8007
8008(F) B<This message no longer should be raised as of Perl 5.30.>  It is
8009retained in this document as a convenience for people using an earlier
8010Perl version.
8011
8012In Perl 5.30 and earlier, lookbehind is allowed
8013only for subexpressions whose length is fixed and
8014known at compile time.  For positive lookbehind, you can use the C<\K>
8015regex construct as a way to get the equivalent functionality.  See
8016L<(?<=pattern) and \K in perlre|perlre/\K>.
8017
8018Starting in Perl 5.18, there are non-obvious Unicode rules under C</i>
8019that can match variably, but which you might not think could.  For
8020example, the substring C<"ss"> can match the single character LATIN
8021SMALL LETTER SHARP S.  Here's a complete list of the current ones
8022affecting ASCII characters:
8023
8024   ASCII
8025  sequence      Matches single letter under /i
8026    FF          U+FB00 LATIN SMALL LIGATURE FF
8027    FFI         U+FB03 LATIN SMALL LIGATURE FFI
8028    FFL         U+FB04 LATIN SMALL LIGATURE FFL
8029    FI          U+FB01 LATIN SMALL LIGATURE FI
8030    FL          U+FB02 LATIN SMALL LIGATURE FL
8031    SS          U+00DF LATIN SMALL LETTER SHARP S
8032                U+1E9E LATIN CAPITAL LETTER SHARP S
8033    ST          U+FB06 LATIN SMALL LIGATURE ST
8034                U+FB05 LATIN SMALL LIGATURE LONG S T
8035
8036This list is subject to change, but is quite unlikely to.
8037Each ASCII sequence can be any combination of upper- and lowercase.
8038
8039You can avoid this by using a bracketed character class in the
8040lookbehind assertion, like
8041
8042 (?<![sS]t)
8043 (?<![fF]f[iI])
8044
8045This fools Perl into not matching the ligatures.
8046
8047Another option for Perls starting with 5.16, if you only care about
8048ASCII matches, is to add the C</aa> modifier to the regex.  This will
8049exclude all these non-obvious matches, thus getting rid of this message.
8050You can also say
8051
8052 use if $] ge 5.016, re => '/aa';
8053
8054to apply C</aa> to all regular expressions compiled within its scope.
8055See L<re>.
8056
8057=item Variable length positive lookbehind with capturing is experimental in regex m/%s/
8058
8059(W) Variable length positive lookbehind with capturing is not well defined. This
8060warning alerts you to the fact that you are using a construct which may
8061change in a future version of perl. See the
8062L<< documentation of Positive Lookbehind in perlre|perlre/"C<(?<=I<pattern>)>" >>
8063for details. You may silence this warning with the following:
8064
8065    no warnings 'experimental::vlb';
8066
8067=item Variable length negative lookbehind with capturing is experimental in regex m/%s/
8068
8069(W) Variable length negative lookbehind with capturing is not well defined. This
8070warning alerts you to the fact that you are using a construct which may
8071change in a future version of perl. See the
8072L<< documentation of Negative Lookbehind in perlre|perlre/"C<(?<!I<pattern>)>" >>
8073for details. You may silence this warning with the following:
8074
8075    no warnings 'experimental::vlb';
8076
8077=item "%s" variable %s masks earlier declaration in same %s
8078
8079(W shadow) A "my", "our", "state" or "field" variable has been redeclared in
8080the current scope or statement, effectively eliminating all access to the
8081previous instance.  This is almost always a typographical error.  Note
8082that the earlier variable will still exist until the end of the scope
8083or until all closure references to it are destroyed.
8084
8085=item Variable syntax
8086
8087(A) You've accidentally run your script through B<csh> instead
8088of Perl.  Check the #! line, or manually feed your script into
8089Perl yourself.
8090
8091=item Variable "%s" will not stay shared
8092
8093(W closure) An inner (nested) I<named> subroutine is referencing a
8094lexical variable defined in an outer named subroutine.
8095
8096When the inner subroutine is called, it will see the value of
8097the outer subroutine's variable as it was before and during the *first*
8098call to the outer subroutine; in this case, after the first call to the
8099outer subroutine is complete, the inner and outer subroutines will no
8100longer share a common value for the variable.  In other words, the
8101variable will no longer be shared.
8102
8103This problem can usually be solved by making the inner subroutine
8104anonymous, using the C<sub {}> syntax.  When inner anonymous subs that
8105reference variables in outer subroutines are created, they
8106are automatically rebound to the current values of such variables.
8107
8108=item vector argument not supported with alpha versions
8109
8110(S printf) The %vd (s)printf format does not support version objects
8111with alpha parts.
8112
8113=item Verb pattern '%s' has a mandatory argument in regex; marked by
8114S<<-- HERE> in m/%s/
8115
8116(F) You used a verb pattern that requires an argument.  Supply an
8117argument or check that you are using the right verb.
8118
8119=item Verb pattern '%s' may not have an argument in regex; marked by
8120S<<-- HERE> in m/%s/
8121
8122(F) You used a verb pattern that is not allowed an argument.  Remove the
8123argument or check that you are using the right verb.
8124
8125=item Version control conflict marker
8126
8127(F) The parser found a line starting with C<E<lt><<<<<<>,
8128C<E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>>, or C<=======>.  These may be left by a
8129version control system to mark conflicts after a failed merge operation.
8130
8131=item Version number must be a constant number
8132
8133(P) The attempt to translate a C<use Module n.n LIST> statement into
8134its equivalent C<BEGIN> block found an internal inconsistency with
8135the version number.
8136
8137=item Version string '%s' contains invalid data; ignoring: '%s'
8138
8139(W misc) The version string contains invalid characters at the end, which
8140are being ignored.
8141
8142=item Warning: something's wrong
8143
8144(W) You passed warn() an empty string (the equivalent of C<warn "">) or
8145you called it with no args and C<$@> was empty.
8146
8147=item Warning: unable to close filehandle %s properly
8148
8149(S) The implicit close() done by an open() got an error indication on
8150the close().  This usually indicates your file system ran out of disk
8151space.
8152
8153=item Warning: unable to close filehandle properly: %s
8154
8155=item Warning: unable to close filehandle %s properly: %s
8156
8157(S io) There were errors during the implicit close() done on a filehandle
8158when its reference count reached zero while it was still open, e.g.:
8159
8160    {
8161        open my $fh, '>', $file  or die "open: '$file': $!\n";
8162        print $fh $data or die "print: $!";
8163    } # implicit close here
8164
8165Because various errors may only be detected by close() (e.g. buffering could
8166allow the C<print> in this example to return true even when the disk is full),
8167it is dangerous to ignore its result.  So when it happens implicitly, perl
8168will signal errors by warning.
8169
8170B<Prior to version 5.22.0, perl ignored such errors>, so the common idiom shown
8171above was liable to cause B<silent data loss>.
8172
8173=item Warning: Use of "%s" without parentheses is ambiguous
8174
8175(S ambiguous) You wrote a unary operator followed by something that
8176looks like a binary operator that could also have been interpreted as a
8177term or unary operator.  For instance, if you know that the rand
8178function has a default argument of 1.0, and you write
8179
8180    rand + 5;
8181
8182you may THINK you wrote the same thing as
8183
8184    rand() + 5;
8185
8186but in actual fact, you got
8187
8188    rand(+5);
8189
8190So put in parentheses to say what you really mean.
8191
8192=item when is deprecated
8193
8194(D deprecated::smartmatch) C<when> depends on smartmatch, which is
8195deprecated.  Additionally, it has several special cases that may
8196not be immediately obvious, and it will be removed in Perl 5.42.
8197See the explanation
8198under L<perlsyn/Experimental Details on given and when>.
8199
8200=item Wide character in %s
8201
8202(S utf8) Perl met a wide character (ordinal >255) when it wasn't
8203expecting one.  This warning is by default on for I/O (like print).
8204
8205If this warning does come from I/O, the easiest
8206way to quiet it is simply to add the C<:utf8> layer, I<e.g.>,
8207S<C<binmode STDOUT, ':utf8'>>.  Another way to turn off the warning is
8208to add S<C<no warnings 'utf8';>> but that is often closer to
8209cheating.  In general, you are supposed to explicitly mark the
8210filehandle with an encoding, see L<open> and L<perlfunc/binmode>.
8211
8212If the warning comes from other than I/O, this diagnostic probably
8213indicates that incorrect results are being obtained.  You should examine
8214your code to determine how a wide character is getting to an operation
8215that doesn't handle them.
8216
8217=item Wide character (U+%X) in %s
8218
8219(W locale) While in a single-byte locale (I<i.e.>, a non-UTF-8
8220one), a multi-byte character was encountered.   Perl considers this
8221character to be the specified Unicode code point.  Combining non-UTF-8
8222locales and Unicode is dangerous.  Almost certainly some characters
8223will have two different representations.  For example, in the ISO 8859-7
8224(Greek) locale, the code point 0xC3 represents a Capital Gamma.  But so
8225also does 0x393.  This will make string comparisons unreliable.
8226
8227You likely need to figure out how this multi-byte character got mixed up
8228with your single-byte locale (or perhaps you thought you had a UTF-8
8229locale, but Perl disagrees).
8230
8231=item Within []-length '%c' not allowed
8232
8233(F) The count in the (un)pack template may be replaced by C<[TEMPLATE]>
8234only if C<TEMPLATE> always matches the same amount of packed bytes that
8235can be determined from the template alone.  This is not possible if
8236it contains any of the codes @, /, U, u, w or a *-length.  Redesign
8237the template.
8238
8239=item While trying to resolve method call %s->%s() can not locate package "%s" yet it is mentioned in @%s::ISA (perhaps you forgot to load "%s"?)
8240
8241(W syntax) It is possible that the C<@ISA> contains a misspelled or never loaded
8242package name, which can result in perl choosing an unexpected parent
8243class's method to resolve the method call. If this is deliberate you
8244can do something like
8245
8246  @Missing::Package::ISA = ();
8247
8248to silence the warnings, otherwise you should correct the package name, or
8249ensure that the package is loaded prior to the method call.
8250
8251=item %s() with negative argument
8252
8253(S misc) Certain operations make no sense with negative arguments.
8254Warning is given and the operation is not done.
8255
8256=item write() on closed filehandle %s
8257
8258(W closed) The filehandle you're writing to got itself closed sometime
8259before now.  Check your control flow.
8260
8261=item %s "\x%X" does not map to Unicode
8262
8263(S utf8) When reading in different encodings, Perl tries to
8264map everything into Unicode characters.  The bytes you read
8265in are not legal in this encoding.  For example
8266
8267    utf8 "\xE4" does not map to Unicode
8268
8269if you try to read in the a-diaereses Latin-1 as UTF-8.
8270
8271=item 'X' outside of string
8272
8273(F) You had a (un)pack template that specified a relative position before
8274the beginning of the string being (un)packed.  See L<perlfunc/pack>.
8275
8276=item 'x' outside of string in unpack
8277
8278(F) You had an unpack template that specified a relative position after
8279the end of the string being unpacked.  See L<perlfunc/pack>.
8280
8281=item YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!
8282
8283(F) And you probably never will, because you probably don't have the
8284sources to your kernel, and your vendor probably doesn't give a rip
8285about what you want.  There is a vulnerability anywhere that you have a
8286set-id script, and to close it you need to remove the set-id bit from
8287the script that you're attempting to run.  To actually run the script
8288set-id, your best bet is to put a set-id C wrapper around your script.
8289
8290=item You need to quote "%s"
8291
8292(W syntax) You assigned a bareword as a signal handler name:
8293
8294    $SIG{...} = foo;
8295
8296However, this will not make C<sub foo> the signal handler. Instead, Perl
8297will call the subroutine when the assignment is executed and use the
8298returned value as the signal handler, which is probably not what you want.
8299(If it I<is> what you want, put C<()> after the subroutine name to avoid
8300the warning.)
8301
8302To register the subroutine as the signal handler, take a reference to it:
8303
8304    $SIG{...} = \&foo;
8305
8306=item Your random numbers are not that random
8307
8308(F) When trying to initialize the random seed for hashes, Perl could
8309not get any randomness out of your system.  This usually indicates
8310Something Very Wrong.
8311
8312=item Zero length \N{} in regex; marked by S<<-- HERE> in m/%s/
8313
8314(F) Named Unicode character escapes (C<\N{...}>) may return a zero-length
8315sequence.  Such an escape was used in an extended character class, i.e.
8316C<(?[...])>, or under C<use re 'strict'>, which is not permitted.  Check
8317that the correct escape has been used, and the correct charnames handler
8318is in scope.  The S<<-- HERE> shows whereabouts in the regular
8319expression the problem was discovered.
8320
8321=back
8322
8323=head1 SEE ALSO
8324
8325L<warnings>, L<diagnostics>.
8326
8327=cut
8328