=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 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. It is experimental, and will warn by default unless C is in effect. It is intended mainly for use in assignments to references. For example: use experimental 'refaliasing', 'declared_refs'; my \$a = \$b; See L for more details. =head2 Unicode 9.0 is now supported A list of changes is at L. Modules that are shipped with core Perl but not maintained by p5p do not necessarily support Unicode 9.0. L does work on 9.0. =head2 Use of C<\p{I