This has been fixed (or the feature has been removed, depending on how you see
it).
+=head3 local($_) will strip all magic from $_
+
+local() on scalar variables will give them a new value, but keep all
+their magic intact. This has proven to be problematic for the default
+scalar variable $_, where L<perlsub> recommends that any subroutine
+that assigns to $_ should localize it first. This would throw an
+exception if $_ is aliased to a read-only variable, and could have
+various unintentional side-effects in general.
+
+Therefore, as an exception to the general rule, local($_) will not
+only assign a new value to $_, but also remove all existing magic from
+it as well.
+
=head2 Changes to Syntax or to Perl Operators
=head3 C<given> return values
In-memory files created by C<open $fh, 'E<gt>' \$buffer> were not calling
FETCH/STORE at all [perl #43789] (5.12.2).
+=item *
+
+utf8::is_utf8 now respects get-magic (e.g. $1) (5.12.1).
+
=back
=item *
=item *
-C<sprintf> now dies when passed a tainted scalar for the format. It did
+C<sprintf> now dies when passed a tainted scalar for the format. It did
already die for arbitrary expressions, but not for simple scalars
[perl #82250].
-=item *
-
-utf8::is_utf8 now respects get-magic (e.g. $1) (5.12.1).
-
=back
=head2 The Debugger
C<#line> directives in string evals were not properly updating the arrays
of lines of code (C<< @{"_<..."} >>) that the debugger (or any debugging or
-profiling module) uses. In threaded builds, they were not being updated at
-all. In non-threaded builds, the line number was ignored, so any change to
+profiling module) uses. In threaded builds, they were not being updated at
+all. In non-threaded builds, the line number was ignored, so any change to
the existing line number would cause the lines to be misnumbered
[perl #79442].
crash, because the handles were not cloned, but simply passed to the new
thread, resulting in a double free.
-Now directory handles are cloned properly, on systems that have a C<fchdir>
-function. On other systems, new threads simply do not inherit directory
+Now directory handles are cloned properly, on Windows
+and on systems that have a C<fchdir> function. On other
+systems, new threads simply do not inherit directory
handles from their parent threads [perl #75154].
=item *
=item *
Perl now does a timely cleanup of SVs that are cloned into a new thread but
-then discovered to be orphaned (i.e., their owners are I<not> cloned). This
+then discovered to be orphaned (i.e., their
+owners are I<not> cloned). This
eliminates several "scalars leaked" warnings when joining threads.
=back
=item *
A signal handler called within a signal handler could cause leaks or
-double-frees. Now fixed. [perl #76248].
+double-frees. Now fixed [perl #76248].
=back
L<pos()|perlfunc/"index STR,SUBSTR,POSITION">, L<keys()|perlfunc/"keys HASH">,
and L<vec()|perlfunc/"vec EXPR,OFFSET,BITS"> could, when used in combination
with lvalues, result in leaking the scalar value they operate on, and cause its
-destruction to happen too late. This has now been fixed.
+destruction to happen too late. This has now been fixed.
=item *
=item *
C<sv_catsv_flags> no longer calls C<mg_get> on its second argument (the
-source string) if the flags passed to it do not include SV_GMAGIC. So it
+source string) if the flags passed to it do not include SV_GMAGIC. So it
now matches the documentation.
=item *
This is actually a change introduced in perl 5.12.0, but it was missed from
that release's perldelta.
+=head2 C<split> and C<@_>
+
+C<split> no longer modifies C<@_> when called in scalar or void context.
+In void context it now produces a "Useless use of split" warning.
+This was also a perl 5.12.0 changed which missed the perldelta.
+
=head1 Obituary
Randy Kobes, creator of the kobesearch alternative to search.cpan.org and