perl

 view release on metacpan or  search on metacpan

pod/perl5220delta.pod  view on Meta::CPAN


Core keywords that conflict with lexical subroutines are now deparsed with
the C<CORE::> prefix.

C<foreach state $x (...) {...}> now deparses correctly with C<state> and
not C<my>.

C<our @array = split(...)> now deparses correctly with C<our> in those
cases where the assignment is optimized away.

It now deparses C<our(I<LIST>)> and typed lexical (C<my Dog $spot>) correctly.

Deparse C<$#_> as that instead of as C<$#{_}>.
L<[GH #14545]|https://github.com/Perl/perl5/issues/14545>

BEGIN blocks at the end of the enclosing scope are now deparsed in the
right place.  [perl #77452]

BEGIN blocks were sometimes deparsed as __ANON__, but are now always called
BEGIN.

Lexical subroutines are now fully deparsed.  [perl #116553]

C<Anything =~ y///r> with C</r> no longer omits the left-hand operand.

The op trees that make up regexp code blocks are now deparsed for real.
Formerly, the original string that made up the regular expression was used.
That caused problems with C<qr/(?{E<lt>E<lt>heredoc})/> and multiline code blocks,
which were deparsed incorrectly.  [perl #123217] [perl #115256]

C<$;> at the end of a statement no longer loses its semicolon.
[perl #123357]

Some cases of subroutine declarations stored in the stash in shorthand form
were being omitted.

Non-ASCII characters are now consistently escaped in strings, instead of
some of the time.  (There are still outstanding problems with regular
expressions and identifiers that have not been fixed.)

When prototype sub calls are deparsed with C<&> (I<e.g.>, under the B<-P>
option), C<scalar> is now added where appropriate, to force the scalar
context implied by the prototype.

C<require(foo())>, C<do(foo())>, C<goto(foo())> and similar constructs with
loop controls are now deparsed correctly.  The outer parentheses are not
optional.

Whitespace is no longer escaped in regular expressions, because it was
getting erroneously escaped within C<(?x:...)> sections.

C<sub foo { foo() }> is now deparsed with those mandatory parentheses.

C</@array/> is now deparsed as a regular expression, and not just
C<@array>.

C</@{-}/>, C</@{+}/> and C<$#{1}> are now deparsed with the braces, which
are mandatory in these cases.

In deparsing feature bundles, C<B::Deparse> was emitting C<no feature;> first
instead of C<no feature ':all';>.  This has been fixed.

C<chdir FH> is now deparsed without quotation marks.

C<\my @a> is now deparsed without parentheses.  (Parenthese would flatten
the array.)

C<system> and C<exec> followed by a block are now deparsed correctly.
Formerly there was an erroneous C<do> before the block.

C<< use constant QR =E<gt> qr/.../flags >> followed by C<"" =~ QR> is no longer
without the flags.

Deparsing C<BEGIN { undef &foo }> with the B<-w> switch enabled started to
emit 'uninitialized' warnings in Perl 5.14.  This has been fixed.

Deparsing calls to subs with a C<(;+)> prototype resulted in an infinite
loop.  The C<(;$>) C<(_)> and C<(;_)> prototypes were given the wrong
precedence, causing C<foo($aE<lt>$b)> to be deparsed without the parentheses.

Deparse now provides a defined state sub in inner subs.

=item *

L<B::Op_private> has been added.

L<B::Op_private> provides detailed information about the flags used in the
C<op_private> field of perl opcodes.

=item *

L<bigint>, L<bignum>, L<bigrat> have been upgraded to version 0.39.

Document in CAVEATS that using strings as numbers won't always invoke
the big number overloading, and how to invoke it.  [rt.perl.org #123064]

=item *

L<Carp> has been upgraded to version 1.36.

C<Carp::Heavy> now ignores version mismatches with Carp if Carp is newer
than 1.12, since C<Carp::Heavy>'s guts were merged into Carp at that
point.
L<[GH #13708]|https://github.com/Perl/perl5/issues/13708>

Carp now handles non-ASCII platforms better.

Off-by-one error fix for Perl E<lt> 5.14.

=item *

L<constant> has been upgraded to version 1.33.

It now accepts fully-qualified constant names, allowing constants to be defined
in packages other than the caller.

=item *

L<CPAN> has been upgraded to version 2.11.

Add support for C<Cwd::getdcwd()> and introduce workaround for a misbehavior



( run in 1.032 second using v1.01-cache-2.11-cpan-5c0b1e786e0 )