=head1 NAME perldelta - what is new for perl v5.9.2 =head1 DESCRIPTION This document describes differences between the 5.9.1 and the 5.9.2 development releases. See L and L for the differences between 5.8.0 and 5.9.1. =head1 Incompatible Changes =head2 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 C 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 C. To be consistent with pack(), the C in unpack() templates indicates that the data is to be processed in character mode, i.e. character by character; at the contrary, C 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, C and C can also be used in pack() templates to specify respectively character and byte modes. C and C 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, C, which is intended to replace the old C. C is kept for unsigned chars coded as bytes in the strings internal representation. C 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, C 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 characters. =head1 Core Enhancements =head2 Regexp debug flags A new variable, ${^RE_DEBUG_FLAGS}, controls what debug flags are in effect for the regular expression engine when running under C. See L for details. =head1 Modules and Pragmata =head1 Utility Changes =head1 Documentation =head1 Performance Enhancements =head2 Trie optimization for regexp engine The regexp engine is now able to factorize common prefixes and suffixes in regular expressions. A new special variable, ${^RE_TRIE_MAXBUFF}, has been added to fine tune this optimization. =head1 Installation and Configuration Improvements =head1 Selected Bug Fixes =head1 New or Changed Diagnostics =head1 Changed Internals =head1 Known Problems =head2 Platform Specific Problems =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://bugs.perl.org/ . 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 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, will be sent off to perlbug@perl.org to be analysed by the Perl porting team. =head1 SEE ALSO The F file for exhaustive details on what changed. The F file for how to build Perl. The F file for general stuff. The F and F files for copyright information. =cut