Some of the changes have been included in Perl 5.14.1. These are
indicated with a "(5.14.1)" marker.
-XXX compare this perldelta to 5.14.1 and double check the notation
-
=head1 Core Enhancements
=head2 C<CORE::> works on all keywords
=head1 Modules and Pragmata
-XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
-go here. If Module::CoreList is updated, generate an initial draft of the
-following sections using F<Porting/corelist-perldelta.pl>, which prints stub
-entries to STDOUT. Results can be pasted in place of the '=head2' entries
-below. A paragraph summary for important changes should then be added by hand.
-In an ideal world, dual-life modules would have a F<Changes> file that could be
-cribbed.
-
-[ Within each section, list entries as a =item entry ]
-
=head2 New Modules and Pragmata
None.
=item *
+L<charnames> has been updated from version 1.18 to version 1.22
+
+L<charnames> can now be invoked with a new option, C<:loose>,
+which is like the existing C<:full> option, but enables Unicode loose
+name matching. Details are in L<charnames/LOOSE MATCHES>.
+
+=item *
+
L<constant> has been updated from version 1.21 to 1.22.
=item *
=item *
-L<B::Deparse> has been upgraded from version 1.03 to 1.05.
+L<B::Deparse> has been upgraded from version 1.03 to 1.05. (Perl 5.14.1
+had version 1.04.)
It addresses two regressions in Perl 5.14.0:
=item *
Deparsing of the C<glob> operator and its diamond (C<< <> >>) form now
-works again [RT #90898] (5.14.1).
+works again [perl #90898] (5.14.1).
=item *
=item *
Deparsing of handle C<keys>, C<each> and C<value> with a scalar argument
-now works [RT #91008].
+now works [perl #91008].
=item *
=item *
Deparsing assignment to an lvalue method specified as a variable
-(C<< $obj->$method = ... >>) used not to work [RT #62498].
+(C<< $obj->$method = ... >>) used not to work [perl #62498].
=back
C<$scalar> is a copy-on-write scalar.
It also fixes a hang that occurs with C<readline> or C<< <$fh> >> if a
-typeglob has been assigned to $scalar [RT #92258].
+typeglob has been assigned to $scalar [perl #92258].
=item *
L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.15_05.
-It corrects the search paths on VMS [RT #90640].
+It corrects the search paths on VMS [perl #90640].
=item *
Integrated changes from bleadperl
-=item *
-
-L<charnames> can now be invoked with a new option, C<:loose>,
-which is like the existing C<:full> option, but enables Unicode loose
-name matching. This means that instead of
-having to get the name of the code point or sequence you want exactly right,
-you can fudge things somewhat. This is especially useful when
-you don't remember if the official Unicode name uses hyphens or
-blanks between words. Details are in L<charnames/LOOSE MATCHES>.
-
=back
=head2 Removed Modules and Pragmata
Some of the function descriptions in L<perlguts> were confusing, as it was
not clear whether they referred to the function above or below the
-description. This has been clarified [RT #91790].
+description. This has been clarified [perl #91790].
=back
L<perlmod> now states explicitly that some types of explicit symbol table
manipulation are not supported. This codifies what was effectively already
-the case [RT #78074].
+the case [perl #78074].
=back
The documentation for L<$!|perlvar/$!> has been corrected and clarified.
It used to state that $! could be C<undef>, which is not the case. It was
also unclear as to whether system calls set C's C<errno> or Perl's C<$!>
-[RT #91614].
+[perl #91614].
=item *
=item L<Useless assignment to a temporary|perldiag/"Useless assignment to a temporary">
Assigning to a temporary returned from an XS lvalue subroutine now produces a
-warning [RT #31946].
+warning [perl #31946].
=back
=item *
Supplied F<makefile.mk> patched to support gcc-4.x.x and README.win32
-updated accordingly. [RT #91354]
+updated accordingly. [perl #91354]
=back
=item *
Updated the list of required packages for building perl to reflect Solaris 9
-and 10 in README.solaris [RT #90850]
+and 10 in README.solaris [perl #90850]
=back
=item *
The L<ODBM_File> installation process has been updated with the new library
-paths on Ubuntu natty [RT #90106].
+paths on Ubuntu natty [perl #90106].
=item *
I<h2ph> now gets the include paths from gcc correctly. This stopped
-working when Ubuntu switched to a "multiarch" setup [RT #90122].
+working when Ubuntu switched to a "multiarch" setup [perl #90122].
=back
in particular, where the format itself is potentially variable (such as
with ties and overloading), and where the format and data differ in their
encoding. In both these cases, it used to possible for the output to be
-corrupted [RT #91032].
+corrupted [perl #91032].
=item *
C<formline> no longer converts its argument into a string in-place. So
passing a reference to C<formline> no longer destroys the reference
-[RT #79532].
+[perl #79532].
=back
C<utf8::decode> had a nasty bug that would modify copy-on-write scalars'
string buffers in place (i.e., skipping the copy). This could result in
-hashes having two elements with the same key [RT #91834].
+hashes having two elements with the same key [perl #91834].
=item *
=item *
Explicit return now returns the actual argument passed to return, instead
-of copying it [RT #72724] [RT #72706].
+of copying it [perl #72724] [perl #72706].
B<Note:> There are still some discrepancies between explicit and implicit
return, which will hopefully be resolved soon. So the exact behaviour is
Lvalue subroutines are less restrictive as to what values can be returned.
It used to croak on values returned by C<shift> and C<delete> and from
-other subroutines, but no longer does so [RT #71172].
+other subroutines, but no longer does so [perl #71172].
=item *
Lvalue subroutines used to copy their return values in rvalue context. Not
only was this a waste of CPU cycles, but it also caused bugs. A C<($)>
-prototype would cause an lvalue sub to copy its return value [RT #51408],
+prototype would cause an lvalue sub to copy its return value [perl #51408],
and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly
-[RT #78680].
+[perl #78680].
=item *
Autovivification now works on values returned from lvalue subroutines
-[RT #7946].
+[perl #7946].
=item *
ignoring its arguments. It also made nonsensical code like C<@{\$_}> "work".
This was fixed in 5.14.0 if an array were the first thing returned from the
subroutine (but not for C<$scalar, @array> or hashes being returned). Now a
-more general fix has been applied [RT #23790].
+more general fix has been applied [perl #23790].
=item *
A bug has been fixed that would cause a "Use of freed value in iteration"
error if the next two hash elements that would be iterated over are
-deleted [RT #85026].
+deleted [perl #85026].
=item *
-Freeing deeply nested hashes no longer crashes [RT #44225].
+Freeing deeply nested hashes no longer crashes [perl #44225].
=item *
Deleting the current hash iterator (the hash element that would be returend
by the next call to C<each>) in void context used not to free it. The hash
would continue to reference it until the next iteration. This has been
-fixed [RT #85026].
+fixed [perl #85026].
=back
=item *
Passing the same constant subroutine to both C<index> and C<formline> no
-longer causes one or the other to fail [RT #89218].
+longer causes one or the other to fail [perl #89218].
=item *
Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of
a pack template equivalent to "U0" if the input string was empty. This has
-been fixed [RT #90160].
+been fixed [perl #90160].
=item *
Now there is an extra pass during global destruction to fire destructors on
any objects that might be left after the usual passes that check for
-objects referenced by scalars [RT #36347].
+objects referenced by scalars [perl #36347].
This bug fix was added in Perl 5.13.9, but caused problems with some CPAN
modules that were relying on the bug. Since it was so close to Perl
C<given> was not calling set-magic on the implicit lexical C<$_> that it
uses. This meant, for example, that C<pos> would be remembered from one
execution of the same C<given> block to the next, even if the input were a
-different variable [RT #84526].
+different variable [perl #84526].
=item *
The "R" command for restarting a debugger session has been fixed to work on
Windows, or any other system lacking a C<POSIX::_SC_OPEN_MAX> constant
-[RT #87740].
+[perl #87740].
=item *
Fixed a case where it was possible that a freed buffer may have been read
-from when parsing a here document [RT #90128].
+from when parsing a here document [perl #90128].
=item *
=item *
C<each(I<ARRAY>)> is now wrapped in C<defined(...)>, like C<each(I<HASH>)>,
-inside a C<while> condition [RT #90888].
+inside a C<while> condition [perl #90888].
=item *
In @INC filters (subroutines returned by subroutines in @INC), $_ used to
misbehave: If returned from a subroutine, it would not be copied, but the
variable itself would be returned; and freeing $_ (e.g., with C<undef *_>)
-would cause perl to crash. This has been fixed [RT #91880].
+would cause perl to crash. This has been fixed [perl #91880].
=item *
An ASCII single quote (') in a symbol name is meant to be equivalent to a
double colon (::) except at the end of the name. It was not equivalent if
-followed by a null character, but now it is [RT #88138].
+followed by a null character, but now it is [perl #88138].
=item *
=item *
Some cases of threads crashing due to memory allocation during cloning have
-been fixed [RT #90006].
+been fixed [perl #90006].
=item *
Attempting to C<goto> out of a tied handle method used to cause memory
corruption or crashes. Now it produces an error message instead
-[RT #8611].
+[perl #8611].
=item *
is not in use elsewhere. Due to faulty logic, this would happen with the
result of C<delete>, C<shift> or C<splice>, even if the result was
referenced elsewhere. So C<< \sub { delete $_[0] }->($x) >> would return a
-reference to C<$x>. This has been fixed [RT #91844].
+reference to C<$x>. This has been fixed [perl #91844].
=back
=item *
-The fix for RT #36347 causes test failures for C<Gtk2> and C<Tk> on some
-systems [RT #82542].
+The fix for perl #36347 causes test failures for C<Gtk2> and C<Tk> on some
+systems [perl #82542].
=item *