(F) You passed an invalid number (like an infinity or not-a-number) to C<chr>.
+=item Cannot complete in-place edit of %s: %s
+
+(F) Your perl script appears to have changed directory while
+performing an in-place edit of a file specified by a relative path,
+and your system doesn't include the directory relative POSIX functions
+needed to handle that.
+
=item Cannot compress %f in pack
(F) You tried compressing an infinity or not-a-number as an unsigned
=item Can't rename %s to %s: %s, skipping file
-(S inplace) The rename done by the B<-i> switch failed for some reason,
+(F) The rename done by the B<-i> switch failed for some reason,
probably because you don't have write permission to the directory.
+=item Can't rename in-place work file '%s' to '%s': %s
+
+(F) When closed implicitly, the temporary file for in-place editing
+couldn't be renamed to the original filename.
+
=item Can't reopen input pipe (name: %s) in binary mode
(P) An error peculiar to VMS. Perl thought stdin was a pipe, and tried
CHECK, INIT, or END subroutine. Processing of the remainder of the
queue of such routines has been prematurely ended.
-=item Failed to close in-place edit file %s: %s
+=item Failed to close in-place work file %s: %s
(F) Closing an output file from in-place editing, as with the C<-i>
command-line switch, failed.
reason, your version of Perl appears to have been built without
this support. Talk to your Perl administrator.
+=item Illegal operator following parameter in a subroutine signature
+
+(F) A parameter in a subroutine signature, was followed by something
+other than C<=> introducing a default, C<,> or C<)>.
+
+ use feature 'signatures';
+ sub foo ($=1) {} # legal
+ sub foo ($a = 1) {} # legal
+ sub foo ($a += 1) {} # illegal
+ sub foo ($a == 1) {} # illegal
+
=item Illegal character following sigil in a subroutine signature
(F) A parameter in a subroutine signature contained an unexpected character
the same pattern, which is an infinite loop which is broken by
throwing an exception.
-=item Initialization of state variables in list context currently forbidden
+=item Initialization of state variables in list currently forbidden
-(F) C<state> only permits initializing a single scalar variable, in scalar
-context. So C<state $a = 42> is allowed, but not C<state ($a) = 42>. To apply
-state semantics to a hash or array, store a hash or array reference in a
-scalar variable.
+(F) C<state> only permits initializing a single variable, specified
+without parentheses. So C<state $a = 42> and C<state @a = qw(a b c)> are
+allowed, but not C<state ($a) = 42> or C<(state $a) = 42>. To initialize
+more than one C<state> variable, initialize them one at a time.
=item %%s[%s] in scalar context better written as $%s[%s]
however, because you can overload the numification and stringification
operators and then you presumably know what you are doing.
-=item Use of state $_ is experimental
-
-(S experimental::lexical_topic) Lexical $_ is an experimental feature and
-its behavior may change or even be removed in any future release of perl.
-See the explanation under L<perlvar/$_>.
-
=item Use of strings with code points over 0xFF as arguments to %s
operator is not allowed
regex construct as a way to get the equivalent functionality. See
L<(?<=pattern) and \K in perlre|perlre/\K>.
-There are non-obvious Unicode rules under C</i> that can match variably,
-but which you might not think could. For example, the substring C<"ss">
-can match the single character LATIN SMALL LETTER SHARP S. There are
-other sequences of ASCII characters that can match single ligature
-characters, such as LATIN SMALL LIGATURE FFI matching C<qr/ffi/i>.
-Starting in Perl v5.16, if you only care about ASCII matches, adding the
-C</aa> modifier to the regex will exclude all these non-obvious matches,
-thus getting rid of this message. You can also say C<S<use re qw(/aa)>>
+Starting in Perl 5.18, there are non-obvious Unicode rules under C</i>
+that can match variably, but which you might not think could. For
+example, the substring C<"ss"> can match the single character LATIN
+SMALL LETTER SHARP S. Here's a complete list of the current ones
+affecting ASCII characters:
+
+ ASCII
+ sequence Matches single letter under /i
+ FF U+FB00 LATIN SMALL LIGATURE FF
+ FFI U+FB03 LATIN SMALL LIGATURE FFI
+ FFL U+FB04 LATIN SMALL LIGATURE FFL
+ FI U+FB01 LATIN SMALL LIGATURE FI
+ FL U+FB02 LATIN SMALL LIGATURE FL
+ SS U+00DF LATIN SMALL LETTER SHARP S
+ U+1E9E LATIN CAPITAL LETTER SHARP S
+ ST U+FB06 LATIN SMALL LIGATURE ST
+ U+FB05 LATIN SMALL LIGATURE LONG S T
+
+This list is subject to change, but is quite unlikely to.
+Each ASCII sequence can be any combination of upper- and lowercase.
+
+You can avoid this by using a bracketed character class in the
+lookbehind assertion, like
+
+ (?<![sS]t)
+ (?<![fF]f[iI])
+
+This fools Perl into not matching the ligatures.
+
+Another option for Perls starting with 5.16, if you only care about
+ASCII matches, is to add the C</aa> modifier to the regex. This will
+exclude all these non-obvious matches, thus getting rid of this message.
+You can also say
+
+ use if $] ge 5.016, re => '/aa';
+
to apply C</aa> to all regular expressions compiled within its scope.
See L<re>.