In perl.git, the branch sprout/perl5140delta has been updated <http://perl5.git.perl.org/perl.git/commitdiff/437e76908aa43a70612c136b5a3099c98766abd8?hp=ba38c4d92465bb8419a0245a339cb3ddde66385b>
- Log ----------------------------------------------------------------- commit 437e76908aa43a70612c136b5a3099c98766abd8 Author: Father Chrysostomos <[email protected]> Date: Mon Mar 14 14:02:24 2011 -0700 perldelta: Reword Core Enhancements and cut down the size of some entries ----------------------------------------------------------------------- Summary of changes: pod/perldelta.pod | 90 +++++++++++++++++++--------------------------------- 1 files changed, 33 insertions(+), 57 deletions(-) diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 8c30b52..8984f8d 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -34,7 +34,7 @@ including the new ones for this release, but their database files are packaged with Perl. Unicode 6.0 has chosen to use the name C<BELL> for the character at U+1F514, -which is a symbol that looks like a bell, and used in Japanese cell +which is a symbol that looks like a bell, and is used in Japanese cell phones. This conflicts with the long-standing Perl usage of having C<BELL> mean the ASCII C<BEL> character, U+0007. In Perl 5.14, C<\N{BELL}> will continue to mean U+0007, but its use will generate a @@ -66,10 +66,10 @@ B<strongly> encouraged to use this subpragma to avoid nasty surprises. =item * C<\N{}> and C<charnames::vianame> now know about the abbreviated -character names listed by Unicode, such as NBSP, SHY, LRO, ZWJ, etc., as -well as all the customary abbreviations for the C0 and C1 control -characters (such as ACK, BEL, CAN, etc.), as well as a few new variants -in common usage of some C1 full names. +character names listed by Unicode, such as NBSP, SHY, LRO, ZWJ, etc., all +the customary abbreviations for the C0 and C1 control characters (such as +ACK, BEL, CAN, etc.), and a few new variants of some C1 full names that +are in common usage. =item * @@ -89,14 +89,12 @@ with your own custom alias. Now it works. =item * -You can also create a custom alias directly to the ordinal of a +You can also create a custom alias of the ordinal of a character, known by C<\N{...}>, C<charnames::vianame()>, and C<charnames::viacode()>. Previously, an alias had to be to an official Unicode character name. This made it impossible to create an alias for -a code point that had no name, such as the ones reserved for private -use. So this change allows you to make more effective use of private -use characters. Only if there is no official name will -C<charnames::viacode()> return your custom one. +a code point that had no name, such as those reserved for private +use. =item * @@ -130,9 +128,9 @@ Unicode standard says they are illegal for "open interchange". =head3 New warnings categories for problematic (non-)Unicode code points. -Three new warnings subcategories of <utf8> have been added. These -allow you to turn off warnings for their covered events, while allowing -the other UTF-8 warnings to remain on. The three categories are: +Three new warnings subcategories of "utf8" have been added. These +allow you to turn off some "utf8" warnings, while allowing +others warnings to remain on. The three categories are: C<surrogate> when UTF-16 surrogates are encountered; C<nonchar> when Unicode non-character code points are encountered; and C<non_unicode> when code points that are above the legal Unicode @@ -142,9 +140,10 @@ maximum of 0x10FFFF are encountered. =head3 C<(?^...)> construct to signify default modifiers -A caret (also called a "circumflex accent") C<"^"> immediately following -a C<"(?"> in a regular expression now means that the subexpression is to -not inherit the surrounding modifiers such as C</i>, but to revert to the +An ASCII caret (also called a "circumflex accent") C<"^"> +immediately following a C<"(?"> in a regular expression +now means that the subexpression does not inherit the +surrounding modifiers such as C</i>, but reverts to the Perl defaults. Any modifiers following the caret override the defaults. The stringification of regular expressions now uses this @@ -152,7 +151,7 @@ notation. E.g., before, C<qr/hlagh/i> would be stringified as C<(?i-xsm:hlagh)>, but now it's stringified as C<(?^i:hlagh)>. The main purpose of this is to allow tests that rely on the -stringification to not have to change when new modifiers are added. +stringification not to have to change when new modifiers are added. See L<perlre/Extended Patterns>. =head3 C</d>, C</l>, C</u>, C</a>, and C</aa> modifiers @@ -166,7 +165,7 @@ in the scope of C<use locale>, even if it is not. The C</u> modifier says to compile the regular expression as if it were in the scope of a C<use feature "unicode_strings"> pragma. -The C</d> modifier is used to override any C<use locale> and +The C</d> (default) modifier is used to override any C<use locale> and C<use feature "unicode_strings"> pragmas that are in effect at the time of compiling the regular expression. @@ -174,10 +173,7 @@ The C</a> regular expression modifier restricts C<\s>, C<\d> and C<\w> and the Posix (C<[[:posix:]]>) character classes to the ASCII range. The complements and C<\b> and C<\B> are correspondingly affected. Otherwise, C</a> behaves like the C</u> modifier, in that -case-insensitive matching uses Unicode semantics; for example, "k" will -match the Unicode C<\N{KELVIN SIGN}> under C</i> matching, and code -points in the Latin1 range, above ASCII will have Unicode semantics when -it comes to case-insensitive matching. +case-insensitive matching uses Unicode semantics. The C</aa> modifier is like C</a>, except that, in case-insensitive matching, no ASCII character will match a non-ASCII character. For example, @@ -207,7 +203,7 @@ It is now safe to use regular expressions within C<(?{...})> and C<(??{...})> code blocks inside regular expressions. These block are still experimental, however, and still have problems with -lexical (C<my>) variables, lexical pragmata and abnormal exiting. +lexical (C<my>) variables and abnormal exiting. =head3 C<use re '/flags';> @@ -221,10 +217,8 @@ See L<re/"'/flags' mode"> for details. =head3 \o{...} for octals -There is a new escape sequence, C<"\o">, in double-quote-like contexts. -It must be followed by braces enclosing an octal number of at least one -digit. It interpolates as the character with an ordinal value equal to -the octal number. This construct allows large octal ordinals beyond the +There is a new octal escape sequence, C<"\o">, in double-quote-like +contexts. This construct allows large octal ordinals beyond the current max of 0777 to be represented. It also allows you to specify a character in octal which can safely be concatenated with other regex snippets and which won't be confused with being a backreference to @@ -276,33 +270,16 @@ C<@{}> or C<%{}>: For C<push>, C<unshift> and C<splice>, the reference will auto-vivify if it is not defined, just as if it were wrapped with C<@{}>. -Calling C<keys> or C<values> directly on a reference gives a substantial -performance improvement over explicit dereferencing. - For C<keys>, C<values>, C<each>, when overloaded dereferencing is present, the overloaded dereference is used instead of dereferencing the -underlying reftype. Warnings are issued about assumptions made in the -following three ambiguous cases: - - (a) If both %{} and @{} overloading exists, %{} is used - (b) If %{} overloading exists on a blessed arrayref, %{} is used - (c) If @{} overloading exists on a blessed hashref, @{} is used +underlying reftype. Warnings are issued about assumptions made in +ambiguous cases. =head3 Single term prototype The C<+> prototype is a special alternative to C<$> that will act like C<\[@%]> when given a literal array or hash variable, but will otherwise -force scalar context on the argument. This is useful for functions which -should accept either a literal array or an array reference as the argument: - - sub smartpush (+@) { - my $aref = shift; - die "Not an array or arrayref" unless ref $aref eq 'ARRAY'; - push @$aref, @_; - } - -When using the C<+> prototype, your function must check that the argument -is of an acceptable type. +force scalar context on the argument. See L<perlsub/Prototypes>. =head3 C<package> block syntax @@ -310,7 +287,7 @@ A package declaration can now contain a code block, in which case the declaration is in scope only inside that block. So C<package Foo { ... }> is precisely equivalent to C<{ package Foo; ... }>. It also works with a version number in the declaration, as in C<package Foo 1.2 { ... }>. -See L<perlfunc> (434da3..36f77d, 702646). +See L<perlfunc>. =head3 Statement labels can appear in more places @@ -325,12 +302,11 @@ Multiple statement labels can now appear before a single statement. Literals may now use either upper case C<0X...> or C<0B...> prefixes, in addition to the already supported C<0x...> and C<0b...> -syntax. (RT#76296) (a674e8d, 333f87f) +syntax [perl #76296]. C, Ruby, Python and PHP already supported this syntax, and it makes Perl more internally consistent. A round-trip with C<eval sprintf -"%#X", 0x10> now returns C<16> in addition to C<eval sprintf "%#x", -0x10>, which worked before. +"%#X", 0x10> now returns C<16>, the way C<eval sprintf "%#x", 0x10> does. =head2 Exception Handling @@ -386,13 +362,13 @@ this is a limitation imposed by Linux. =head3 C<srand()> now returns the seed -This allows programs that need to have repeatable results to not have to come -up with their own seed generating mechanism. Instead, they can use C<srand()> -and somehow stash the return for future use. Typical is a test program which +This allows programs that need to have repeatable results not to have to come +up with their own seed-generating mechanism. Instead, they can use C<srand()> +and stash the return value for future use. Typical is a test program which has too many combinations to test comprehensively in the time available to it -each run. It can test a random subset each time, and should there be a failure, +each run. It can test a random subset each time and, should there be a failure, log the seed used for that run so that it can later be used to reproduce the -exact results. +same results. =head3 printf-like functions understand post-1980 size modifiers @@ -433,7 +409,7 @@ calls C<< Devel::foo->unimport('bar') >> if the method exists. =back -This is particularly useful to suppresses the default actions of a +This is particularly useful for suppressing the default actions of a C<Devel::*> module's C<import> method whilst still loading it for debugging. =head3 Filehandle method calls load L<IO::File> on demand -- Perl5 Master Repository
