View on
MetaCPAN is shutting down
For details read Perl NOC. After June 25th this page will redirect to
Dave Rolsky > perl > perl5174delta


Annotate this POD


Source   Latest Release: perl-5.17.11


perl5174delta - what is new for perl v5.17.4


This document describes differences between the 5.17.3 release and the 5.17.4 release.

If you are upgrading from an earlier release such as 5.17.2, first read perl5173delta, which describes differences between 5.17.2 and 5.17.3.

Core Enhancements ^

Latest Unicode 6.2 beta is included

This is supposed to be the final data for 6.2, unless glitches are found. The earlier experimental 6.2 beta data has been reverted, and this used instead. Not all the changes that were proposed for 6.2 and that were in the earlier beta versions are actually going into 6.2. In particular, there are no changes from 6.1 in the General_Category of any characters. 6.2 does revise the \X handling for the REGIONAL INDICATOR characters that were added in Unicode 6.0. Perl now for the first time fully handles this revision.

New DTrace probes

The following new DTrace probes have been added:



This new variable provides access to the filehandle that was last read. This is the handle used by $. and by tell and eof without arguments.

Looser here-doc parsing

Here-doc terminators no longer require a terminating newline character when they occur at the end of a file. This was already the case at the end of a string eval [perl #65838].

New mechanism for experimental features

Newly-added experimental features will now require this incantation:

    no warnings "experimental:feature_name";
    use feature "feature_name";  # would warn without the prev line

There is a new warnings category, called "experimental", containing warnings that the feature pragma emits when enabling experimental features.

Newly-added experimental features will also be given special warning IDs, which consist of "experimental:" followed by the name of the feature. (The plan is to extend this mechanism eventually to all warnings, to allow them to be enabled or disabled individually, and not just by category.)

By saying

    no warnings "experimental:feature_name";

you are taking responsibility for any breakage that future changes to, or removal of, the feature may cause.

Lexical subroutines

This new feature is still considered experimental. To enable it, use the mechanism described above:

    use 5.018;
    no warnings "experimental:lexical_subs";
    use feature "lexical_subs";

You can now declare subroutines with state sub foo, my sub foo, and our sub foo. (state sub requires that the "state" feature be enabled, unless you write it as CORE::state sub foo.)

state sub creates a subroutine visible within the lexical scope in which it is declared. The subroutine is shared between calls to the outer sub.

my sub declares a lexical subroutine that is created each time the enclosing block is entered. state sub is generally slightly faster than my sub.

our sub declares a lexical alias to the package subroutine of the same name.

See "Lexical Subroutines" in perlsub.

Incompatible Changes ^

Here-doc parsing

The body of a here-document inside a quote-like operator now always begins on the line after the "<<foo" marker. Previously, it was documented to begin on the line following the containing quote-like operator, but that was only sometimes the case [perl #114040].

Stricter parsing of substitution replacement

It is no longer possible to abuse the way the parser parses s///e like this:

    %_=(_,"Just another ");
    $_="Perl hacker,\n";

Interaction of lexical and default warnings

Turning on any lexical warnings used first to disable all default warnings if lexical warnings were not already enabled:

    $*; # deprecation warning
    use warnings "void";
    $#; # void warning; no deprecation warning

Now, the debugging, deprecated, glob, inplace and malloc warnings categories are left on when turning on lexical warnings (unless they are turned off by no warnings, of course).

This may cause deprecation warnings to occur in code that used to be free of warnings.

Those are the only categories consisting only of default warnings. Default warnings in other categories are still disabled by use warnings "category", as we do not yet have the infrastructure for controlling individual warnings.

state sub and our sub

Due to an accident of history, state sub and our sub were equivalent to a plain sub, so one could even create an anonymous sub with our sub { ... }. These are now disallowed outside of the "lexical_subs" feature. Under the "lexical_subs" feature they have new meanings described in "Lexical Subroutines" in perlsub.

gv_fetchmeth_* and SUPER

The various gv_fetchmeth_* XS functions used to treat a package whose named ended with ::SUPER specially. A method lookup on the Foo::SUPER package would be treated as a SUPER method lookup on the Foo package. This is no longer the case. To do a SUPER lookup, pass the Foo stash and the GV_SUPER flag.

Performance Enhancements ^

Modules and Pragmata ^

Updated Modules and Pragmata

Diagnostics ^

The following additions or changes have been made to diagnostic output, including warnings and fatal error messages. For the complete list of diagnostic messages, see perldiag.

New Diagnostics

New Warnings

Changes to Existing Diagnostics

Configuration and Compilation ^

Platform Support ^

Discontinued Platforms


Support for VM/ESA has been removed. The port was tested on 2.3.0, which IBM ended service on in March 2002. 2.4.0 ended service in June 2003, and was superseded by Z/VM. The current version of Z/VM is V6.2.0, and scheduled for end of service on 2015/04/30.

Platform-Specific Notes


Fixed a problem where perl could crash while cleaning up threads (including the main thread) in threaded debugging builds on Win32 and possibly other platforms [perl #114496].

A rare race condition that would lead to sleep taking more time than requested, and possibly even hanging, has been fixed [perl #33096].


In Configure, avoid running sed commands with flags not supported on Solaris.


Stop hardcoding an alignment on 8 byte boundaries to fix builds using -Dusemorebits.


Fix linking on builds configured with -Dusemymalloc=y.

Internal Changes ^

Selected Bug Fixes ^

Known Problems ^

Acknowledgements ^

Perl 5.17.4 represents approximately 4 weeks of development since Perl 5.17.3 and contains approximately 82,000 lines of changes across 360 files from 37 authors.

Perl continues to flourish into its third decade thanks to a vibrant community of users and developers. The following people are known to have contributed the improvements that became Perl 5.17.4:

Abhijit Menon-Sen, Andy Dougherty, Aristotle Pagaltzis, Chris 'BinGOs' Williams, Colin Kuskie, Craig A. Berry, Daniel Dragan, David Golden, David Leadbeater, David Mitchell, David Nicol, Dominic Hargreaves, Father Chrysostomos, Florian Ragwitz, H.Merijn Brand, James E Keenan, Jerry D. Hedden, Jesse Luehrs, John Peacock, Karen Etheridge, Karl Williamson, Leon Timmermans, Michael G Schwern, Nicholas Clark, Peter Martini, Rafael Garcia-Suarez, Ricardo Signes, Shawn M Moore, Shlomi Fish, Steffen Müller, Steve Hay, Sullivan Beck, Sébastien Aperghis-Tramoni, Tony Cook, Vincent Pit, Yves Orton.

The list above is almost certainly incomplete as it is automatically generated from version control history. In particular, it does not include the names of the (very much appreciated) contributors who reported issues to the Perl bug tracker.

Many of the changes included in this version originated in the CPAN modules included in Perl's core. We're grateful to the entire CPAN community for helping Perl to flourish.

For a more complete list of all of Perl's historical contributors, please see the AUTHORS file in the Perl source distribution.

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 . There may also be information at , the Perl Home Page.

If you believe you have an unreported bug, please run the 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 perl -V, will be sent off to to be analysed by the Perl porting team.

If the bug you are reporting has security implications, which make it inappropriate to send to a publicly archived mailing list, then please send it to This points to a closed subscription unarchived mailing list, which includes all the core committers, who will be able to help assess the impact of issues, figure out a resolution, and help co-ordinate the release of patches to mitigate or fix the problem across all platforms on which Perl is supported. Please only use this address for security issues in the Perl core, not for modules independently distributed on CPAN.


The Changes file for an explanation of how to view exhaustive details on what changed.

The INSTALL file for how to build Perl.

The README file for general stuff.

The Artistic and Copying files for copyright information.

syntax highlighting: