+=encoding utf8
+
=head1 NAME
-perldelta - what is new for perl 5.10.0
+perl5100delta - what is new for perl 5.10.0
=head1 DESCRIPTION
Currently the following new features are available: C<switch> (adds a
switch statement), C<say> (adds a C<say> built-in function), and C<state>
-(adds an C<state> keyword for declaring "static" variables). Those
+(adds a C<state> keyword for declaring "static" variables). Those
features are described in their own sections of this document.
The C<feature> pragma is also implicitly loaded when you require a minimal
< # match an opening angle bracket
(?: # match one of:
(?> # don't backtrack over the inside of this group
- [^<>]+ # one or more non angle brackets
+ [^<>]+ # one or more non angle brackets
) # end non backtracking group
| # ... or ...
(?1) # recurse to bracket 1 and try it again
=item Vertical and horizontal whitespace, and linebreak
-Regular expressions now recognize the C<\v> and C<\h> escapes, that match
+Regular expressions now recognize the C<\v> and C<\h> escapes that match
vertical and horizontal whitespace, respectively. C<\V> and C<\H>
logically match their complements.
=head2 The C<_> prototype
A new prototype character has been added. C<_> is equivalent to C<$> but
-defaults to C<$_> if the corresponding argument isn't supplied. (both C<$>
-and C<_> denote a scalar). Due to the optional nature of the argument, you
-can only use it at the end of a prototype, or before a semicolon.
+defaults to C<$_> if the corresponding argument isn't supplied (both C<$>
+and C<_> denote a scalar). Due to the optional nature of the argument,
+you can only use it at the end of a prototype, or before a semicolon.
This has a small incompatible consequence: the prototype() function has
been adjusted to return C<_> for some built-ins in appropriate cases (for
Note that, due to changes in the implementation of class hierarchy search,
code that used to undef the C<*ISA> glob will most probably break. Anyway,
undef'ing C<*ISA> had the side-effect of removing the magic on the @ISA
-array and should not have been done in the first place.
+array and should not have been done in the first place. Also, the
+cache C<*::ISA::CACHE::> no longer exists; to force reset the @ISA cache,
+you now need to use the C<mro> API, or more simply to assign to @ISA
+(e.g. with C<@ISA = @ISA>).
=head2 readdir() may return a "short filename" on Windows
use feature 'state';
or by using the C<-E> command-line switch in one-liners.
-See L<perlsub/"Persistent variables via state()">.
+See L<perlsub/"Persistent Private Variables">.
=head2 Stacked filetest operators
octal.
The B<-C> option can no longer be used on the C<#!> line. It wasn't
-working there anyway.
+working there anyway, since the standard streams are already set up
+at this point in the execution of the perl interpreter. You can use
+binmode() instead to get the desired behaviour.
=head2 UCD 5.0.0
=head2 Packing and UTF-8 strings
-=for XXX update this
-
The semantics of pack() and unpack() regarding UTF-8-encoded data has been
changed. Processing is now by default character per character instead of
byte per byte on the underlying encoding. Notably, code that used things
matching F<.pm> file. Starting with 5.9.4, they'll be always loaded if
they exist.
+=head2 $^V is now a C<version> object instead of a v-string
+
+$^V can still be used with the C<%vd> format in printf, but any
+character-level operations will now access the string representation
+of the C<version> object and not the ordinals of a v-string.
+Expressions like C<< substr($^V, 0, 2) >> or C<< split //, $^V >>
+no longer work and must be rewritten.
+
=head2 @- and @+ in patterns
The special arrays C<@-> and C<@+> are no longer interpolated in regular
=head1 Modules and Pragmata
+=head2 Upgrading individual core modules
+
+Even more core modules are now also available separately through the
+CPAN. If you wish to update one of these modules, you don't need to
+wait for a new perl release. From within the cpan shell, running the
+'r' command will report on modules with upgrades available. See
+C<perldoc CPAN> for more information.
+
=head2 Pragmata Changes
=over 4
C<CPANPLUS> provides an API and a command-line tool to access the CPAN
mirrors.
+=item *
+
+C<Pod::Escapes> provides utilities that are useful in decoding Pod
+EE<lt>...E<gt> sequences.
+
+=item *
+
+C<Pod::Simple> is now the backend for several of the Pod-related modules
+included with Perl.
+
=back
=head2 Selected Changes to Core Modules
C<Attribute::Handlers> can now report the caller's file and line number.
(David Feldman)
+All interpreted attributes are now passed as array references. (Damian
+Conway)
+
=item C<B::Lint>
C<B::Lint> is now based on C<Module::Pluggable>, and so can be extended
=item ptar
-C<ptar> is a pure perl implementation of C<tar>, that comes with
+C<ptar> is a pure perl implementation of C<tar> that comes with
C<Archive::Tar>.
=item ptardiff
=item cpan2dist
-C<cpan2dist> is a new utility, that comes with CPANPLUS. It's a tool to
+C<cpan2dist> is a new utility that comes with CPANPLUS. It's a tool to
create distributions (or packages) from CPAN modules.
=item pod2html
Perl has been reported to work on DragonFlyBSD and MidnightBSD.
+Perl has also been reported to work on NexentaOS
+( http://www.gnusolaris.org/ ).
+
The VMS port has been improved. See L<perlvms>.
Support for Cray XT4 Catamount/Qk has been added. See
chr() on a negative value now gives C<\x{FFFD}>, the Unicode replacement
character, unless when the C<bytes> pragma is in effect, where the low
-eight bytes of the value are used.
+eight bits of the value are used.
=item PERL5SHELL and tainting
=item Localisation of hash elements
-Localizing an hash element whose key was given as a variable didn't work
+Localizing a hash element whose key was given as a variable didn't work
correctly if the variable was changed while the local() was in effect (as
in C<local $h{$x}; ++$x>). (Bo Lindbergh)
The anonymous hash and array constructors now take 1 op in the optree
instead of 3, now that pp_anonhash and pp_anonlist return a reference to
-an hash/array when the op is flagged with OPf_SPECIAL (Nicholas Clark).
+an hash/array when the op is flagged with OPf_SPECIAL. (Nicholas Clark)
=head1 Known Problems
C<$_>: it doesn't work inside C</(?{...})/> blocks. (See the TODO test in
F<t/op/mydef.t>.)
+Stacked filetest operators won't work when the C<filetest> pragma is in
+effect, because they rely on the stat() buffer C<_> being populated, and
+filetest bypasses stat().
+
+=head2 UTF-8 problems
+
+The handling of Unicode still is unclean in several places, where it's
+dependent on whether a string is internally flagged as UTF-8. This will
+be made more consistent in perl 5.12, but that won't be possible without
+a certain amount of backwards incompatibility.
+
=head1 Platform Specific Problems
+When compiled with g++ and thread support on Linux, it's reported that the
+C<$!> stops working correctly. This is related to the fact that the glibc
+provides two strerror_r(3) implementation, and perl selects the wrong
+one.
+
=head1 Reporting Bugs
+If you find what you think is a bug, you might check the articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/rt3/ . There may also be
+information at http://www.perl.org/ , the Perl Home Page.
+
+If you believe you have an unreported bug, please run the B<perlbug>
+program included with your release. Be sure to trim your bug down
+to a tiny but sufficient test case. Your bug report, along with the
+output of C<perl -V>, will be sent off to perlbug@perl.org to be
+analysed by the Perl porting team.
+
=head1 SEE ALSO
The F<Changes> file and the perl590delta to perl595delta man pages for