=encoding utf8
=head1 NAME
perl5260delta - what is new for perl v5.26.0
=head1 DESCRIPTION
This document describes the differences between the 5.24.0 release and the
5.26.0 release.
=head1 Notice
This release includes three updates with widespread effects:
=over 4
=item * C<"."> no longer in C<@INC>
For security reasons, the current directory (C<".">) is no longer included
by default at the end of the module search path (C<@INC>). This may have
widespread implications for the building, testing and installing of
modules, and for the execution of scripts. See the section
L<< Removal of the current directory (C<".">) from C<@INC> >>
for the full details.
=item * C may now warn
C now gives a deprecation warning when it fails to load a file which
it would have loaded had C<"."> been in C<@INC>.
=item * In regular expression patterns, a literal left brace C<"{">
should be escaped
See L characters in regular expression patterns are no longer permissible>.
=back
=head1 Core Enhancements
=head2 Lexical subroutines are no longer experimental
Using the C feature introduced in v5.18 no longer emits a warning. Existing
code that disables the C warning category
that the feature previously used will continue to work. The
C feature has no effect; all Perl code can use lexical
subroutines, regardless of what feature declarations are in scope.
=head2 Indented Here-documents
This adds a new modifier C<"~"> to here-docs that tells the parser
that it should look for C^\s*$DELIM\n/> as the closing delimiter.
These syntaxes are all supported:
<<~EOF;
<<~\EOF;
<<~'EOF';
<<~"EOF";
<<~`EOF`;
<<~ 'EOF';
<<~ "EOF";
<<~ `EOF`;
The C<"~"> modifier will strip, from each line in the here-doc, the
same whitespace that appears before the delimiter.
Newlines will be copied as-is, and lines that don't include the
proper beginning whitespace will cause perl to croak.
For example:
if (1) {
print <<~EOF;
Hello there
EOF
}
prints "Hello there\n" with no leading whitespace.
=head2 New regular expression modifier C
Specifying two C<"x"> characters to modify a regular expression pattern
does everything that a single one does, but additionally TAB and SPACE
characters within a bracketed character class are generally ignored and
can be added to improve readability, like
S>. Details are at
Lx and Exx>.
=head2 C<@{^CAPTURE}>, C<%{^CAPTURE}>, and C<%{^CAPTURE_ALL}>
C<@{^CAPTURE}> exposes the capture buffers of the last match as an
array. So C<$1> is C<${^CAPTURE}[0]>. This is a more efficient equivalent
to code like C, and you don't
have to keep track of the C<$matched_string> either. This variable has no
single character equivalent. Note that, like the other regex magic variables,
the contents of this variable is dynamic; if you wish to store it beyond
the lifetime of the match you must copy it to another array.
C<%{^CAPTURE}> is equivalent to C<%+> (I, named captures). Other than
being more self-documenting there is no difference between the two forms.
C<%{^CAPTURE_ALL}> is equivalent to C<%-> (I, all named captures).
Other than being more self-documenting there is no difference between the
two forms.
=head2 Declaring a reference to a variable
As an experimental feature, Perl now allows the referencing operator to come
after L|perlfunc/my>, L|perlfunc/state>,
L|perlfunc/our>, or L|perlfunc/local>. This syntax must
be enabled with C