man pages section 1: User Commands

Exit Print View

Updated: July 2014

perl592delta (1)


perl592delta - what is new for perl v5.9.2


Please see following description for synopsis


Perl Programmers Reference Guide                  PERL592DELTA(1)

     perl592delta - what is new for perl v5.9.2

     This document describes differences between the 5.9.1 and
     the 5.9.2 development releases. See perl590delta and
     perl591delta for the differences between 5.8.0 and 5.9.1.

Incompatible Changes
  Packing and UTF-8 strings
     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 like
     "pack("a*", $string)" to see through the encoding of string
     will now simply get back the original $string. Packed
     strings can also get upgraded during processing when you
     store upgraded characters. You can get the old behaviour by
     using "use bytes".

     To be consistent with pack(), the "C0" in unpack() templates
     indicates that the data is to be processed in character
     mode, i.e. character by character; on the contrary, "U0" in
     unpack() indicates UTF-8 mode, where the packed string is
     processed in its UTF-8-encoded Unicode form on a byte by
     byte basis. This is reversed with regard to perl 5.8.X.

     Moreover, "C0" and "U0" can also be used in pack() templates
     to specify respectively character and byte modes.

     "C0" and "U0" in the middle of a pack or unpack format now
     switch to the specified encoding mode, honoring parens
     grouping. Previously, parens were ignored.

     Also, there is a new pack() character format, "W", which is
     intended to replace the old "C". "C" is kept for unsigned
     chars coded as bytes in the strings internal representation.
     "W" represents unsigned (logical) character values, which
     can be greater than 255. It is therefore more robust when
     dealing with potentially UTF-8-encoded data (as "C" will
     wrap values outside the range 0..255, and not respect the
     string encoding).

     In practice, that means that pack formats are now encoding-
     neutral, except "C".

     For consistency, "A" in unpack() format now trims all
     Unicode whitespace from the end of the string. Before perl
     5.9.2, it used to strip only the classical ASCII space

perl v5.12.5         Last change: 2012-11-03                    1

Perl Programmers Reference Guide                  PERL592DELTA(1)

     The internal dump output has been improved, so that non-
     printable characters such as newline and backspace are
     output in "\x" notation, rather than octal.

     The -C option can no longer be used on the "#!" line. It
     wasn't working there anyway.

Core Enhancements
  Malloc wrapping
     Perl can now be built to detect attempts to assign
     pathologically large chunks of memory.  Previously such
     assignments would suffer from integer wrap-around during
     size calculations causing a misallocation, which would crash
     perl, and could theoretically be used for "stack smashing"
     attacks.  The wrapping defaults to enabled on platforms
     where we know it works (most AIX configurations, BSDi,
     Darwin, DEC OSF/1, FreeBSD, HP-UX, GNU Linux, OpenBSD,
     Solaris, VMS and most Win32 compilers) and defaults to
     disabled on other platforms.

  Unicode Character Database 4.0.1
     The copy of the Unicode Character Database included in Perl
     5.9 has been updated to 4.0.1 from 4.0.0.

  suidperl less insecure
     Paul Szabo has analysed and patched "suidperl" to remove
     existing known insecurities. Currently there are no known
     holes in "suidperl", but previous experience shows that we
     cannot be confident that these were the last. You may no
     longer invoke the set uid perl directly, so to preserve
     backwards compatibility with scripts that invoke
     #!/usr/bin/suidperl the only set uid binary is now
     "sperl5.9."n ("sperl5.9.2" for this release). "suidperl" is
     installed as a hard link to "perl"; both "suidperl" and
     "perl" will invoke "sperl5.9.2" automatically the set uid
     binary, so this change should be completely transparent.

     For new projects the core perl team would strongly recommend
     that you use dedicated, single purpose security tools such
     as "sudo" in preference to "suidperl".

     The "PERLIO_DEBUG" environment variable has no longer any
     effect for setuid scripts and for scripts run with -T.

     Moreover, with a thread-enabled perl, using "PERLIO_DEBUG"
     could lead to an internal buffer overflow. This has been

     In addition to bug fixes, "format"'s features have been

perl v5.12.5         Last change: 2012-11-03                    2

Perl Programmers Reference Guide                  PERL592DELTA(1)

     enhanced. See perlform.

  Unicode Character Classes
     Perl's regular expression engine now contains support for
     matching on the intersection of two Unicode character
     classes. You can also now refer to user-defined character
     classes from within other user defined character classes.

  Byte-order modifiers for pack() and unpack()
     There are two new byte-order modifiers, ">" (big-endian) and
     "<" (little-endian), that can be appended to most pack() and
     unpack() template characters and groups to force a certain
     byte-order for that type or group.  See "pack" in perlfunc
     and perlpacktut for details.

  Byte count feature in pack()
     A new pack() template character, ".", returns the number of
     characters read so far.

  New variables
     A new variable, ${^RE_DEBUG_FLAGS}, controls what debug
     flags are in effect for the regular expression engine when
     running under "use re "debug"". See re for details.

     A new variable ${^UTF8LOCALE} indicates where a UTF-8 locale
     was detected by perl at startup.

Modules and Pragmata
  New modules
     o   "encoding::warnings", by Audrey Tang, is a module to
         emit warnings whenever an ASCII character string
         containing high-bit bytes is implicitly converted into

     o   "Module::CoreList", by Richard Clamp, is a small handy
         module that tells you what versions of core modules ship
         with any versions of Perl 5. It comes with a command-
         line frontend, "corelist".

  Updated And Improved Modules and Pragmata
     Dual-lived modules have been updated to be kept up-to-date
     with respect to CPAN.

     The dual-lived modules which contain an "_" in their version
     number are actually ahead of the corresponding CPAN release.

         "B::Concise" was significantly improved.

         There is experimental support for Linux abstract Unix
         domain sockets.

perl v5.12.5         Last change: 2012-11-03                    3

Perl Programmers Reference Guide                  PERL592DELTA(1)

         "syslog()" can now use numeric constants for facility
         names and priorities, in addition to strings.

         Detached threads are now also supported on Windows.

Utility Changes
     o   The "corelist" utility is now installed with perl (see
         "New modules" above).

     o   "h2ph" and "h2xs" have been made a bit more robust with
         regard to "modern" C code.

     o   Several bugs have been fixed in "find2perl", regarding
         "-exec" and "-eval". Also the options "-path", "-ipath"
         and "-iname" have been added.

     o   The Perl debugger can now save all debugger commands for
         sourcing later; notably, it can now emulate stepping
         backwards, by restarting and rerunning all bar the last
         command from a saved command history.

         It can also display the parent inheritance tree of a
         given class.

         Perl has a new -dt command-line flag, which enables
         threads support in the debugger.

Performance Enhancements
     o   Unicode case mappings ("/i", "lc", "uc", etc) are

     o   "@a = sort @a" was optimized to do in-place sort.
         Likewise, "reverse sort ..." is now optimized to sort in
         reverse, avoiding the generation of a temporary
         intermediate list.

     o   Unnecessary assignments are optimised away in

           my $s = undef;
           my @a = ();
           my %h = ();

     o   "map" in scalar context is now optimized.

     o   The regexp engine now implements the trie optimization :
         it's able to factorize common prefixes and suffixes in
         regular expressions. A new special variable,
         ${^RE_TRIE_MAXBUF}, has been added to fine-tune this

perl v5.12.5         Last change: 2012-11-03                    4

Perl Programmers Reference Guide                  PERL592DELTA(1)

Installation and Configuration Improvements
     Run-time customization of @INC can be enabled by passing the
     "-Dusesitecustomize" flag to configure. When enabled, this
     will make perl run $sitelibexp/ before
     anything else.  This script can then be set up to add
     additional entries to @INC.

     There is alpha support for relocatable @INC entries.

     Perl should build on Interix and on GNU/kFreeBSD.

Selected Bug Fixes
     Most of those bugs were reported in the perl 5.8.x
     maintenance track.  Notably, quite a few utf8 bugs were
     fixed, and several memory leaks were suppressed. The
     perl58Xdelta manpages have more details on them.

     Development-only bug fixes include :

     $Foo::_ was wrongly forced as $main::_.

New or Changed Diagnostics
     A new warning, "!=~ should be !~", is emitted to prevent
     this misspelling of the non-matching operator.

     The warning Newline in left-justified string has been

     The error Too late for "-T" option has been reformulated to
     be more descriptive.

     There is a new compilation error, Illegal declaration of
     subroutine, for an obscure case of syntax errors.

     The diagnostic output of Carp has been changed slightly, to
     add a space after the comma between arguments. This makes it
     much easier for tools such as web browsers to wrap it, but
     might confuse any automatic tools which perform detailed
     parsing of Carp output.

     "perl -V" has several improvements, making it more useable
     from shell scripts to get the value of configuration
     variables. See perlrun for details.

Changed Internals
     The perl core has been refactored and reorganised in several
     places.  In short, this release will not be binary
     compatible with any previous perl release.

Known Problems
     For threaded builds, ext/threads/shared/t/wait.t has been
     reported to fail some tests on HP-UX 10.20.

perl v5.12.5         Last change: 2012-11-03                    5

Perl Programmers Reference Guide                  PERL592DELTA(1)

     Net::Ping might fail some tests on HP-UX 11.00 with the
     latest OS upgrades.

     t/io/dup.t, t/io/open.t and lib/ExtUtils/t/Constant.t fail
     some tests on some BSD flavours.

Plans for the next release
     The current plan for perl 5.9.3 is to add CPANPLUS as a core
     module.  More regular expression optimizations are also in
     the works.

     It is planned to release a development version of perl more
     frequently, i.e. each time something major changes.

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.

     See attributes(5) for descriptions of the following

     |Availability   | runtime/perl-512 |
     |Stability      | Uncommitted      |
     The Changes file for 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.

     This software was built from source available at

perl v5.12.5         Last change: 2012-11-03                    6

Perl Programmers Reference Guide                  PERL592DELTA(1)  The original
     community source was downloaded from

     Further information about this software can be found on the
     open source community website at

perl v5.12.5         Last change: 2012-11-03                    7