3 perldelta - what is new for perl v5.9.3
7 This document describes differences between the 5.9.2 and the 5.9.3
8 development releases. See L<perl590delta>, L<perl591delta> and
9 L<perl592delta> for the differences between 5.8.0 and 5.9.2.
11 =head1 Incompatible Changes
13 =head2 Parsing of C<-f _>
15 C<_> is now forced to be a bareword after a filetest operator. This solves
16 a number of misparsing issues when a global C<_> subroutine is defined.
20 C<mkdir()> without arguments now defaults to C<$_>.
22 =head2 Magic goto and eval
24 The construct C<eval { goto &foo }> is now disallowed. (Note that the
25 similar construct, but with C<eval("")> instead, was already forbidden.)
27 =head2 C<$#> has been removed
29 The deprecated C<$#> variable (output format for numbers) has been
30 removed. A new warning, C<$# is no longer supported>, has been added.
34 The C<:unique> attribute has been made a no-op, since its current
35 implementation was fundamentally flawed and not threadsafe.
37 =head1 Core Enhancements
39 =head2 Switch and Smart Match operator
43 =head2 C<CLONE_SKIP()>
45 Perl has now support for the C<CLONE_SKIP> special subroutine. Like
46 C<CLONE>, C<CLONE_SKIP> is called once per package; however, it is called
47 just before cloning starts, and in the context of the parent thread. If it
48 returns a true value, then no objects of that class will be cloned. See
49 L<perlmod> for details.
51 =head2 C<${^CHILD_ERROR_NATIVE}>
53 A new internal variable, C<${^CHILD_ERROR_NATIVE}>, gives the native
54 status returned by the last pipe close, backtick command, successful call
55 to wait() or waitpid(), or from the system() operator. See L<perlrun> for
60 The support for assertions, introduced in perl 5.9.0, has been improved.
61 The syntax for the C<-A> command-line switch has changed; it now accepts
62 an optional module name, defaulting to C<assertions::activate>. See
63 L<assertions> and L<perlrun>.
65 =head2 Unicode Character Database 4.1.0
67 The copy of the Unicode Character Database included in Perl 5.9 has
68 been updated to 4.1.0.
72 You can now use C<no> followed by a version number to specify that you
73 want to use a version of perl inferior to the specified one.
75 =head1 Modules and Pragmata
79 =head2 C<assertions::compat>
81 =head2 C<Math::BigInt::FastCalc>
83 =head2 C<Compress::Zlib>
87 =head2 C<Archive::Tar>
89 =head1 Utility Changes
97 The L<perlglossary> manpage is a glossary of terms used in the Perl
98 documentation, technical and otherwise.
100 =head1 Performance Enhancements
102 =head1 Installation and Configuration Improvements
104 =head2 New Or Improved Platforms
106 Perl is being ported to Symbian OS. See L<perlsymbian> for more
109 =head2 Module auxiliary files
111 README files and changelogs for CPAN modules bundled with perl are no
114 =head1 Selected Bug Fixes
116 =head2 C<defined $$x>
118 C<use strict "refs"> was ignoring taking a hard reference in an argument
119 to defined(), as in :
123 if (defined $$x) {...}
125 This now correctly produces the run-time error C<Can't use string as a
126 SCALAR ref while "strict refs" in use>. (However, C<defined @$foo> and
127 C<defined %$foo> are still allowed. Those constructs are discouraged
136 C<FindBin> now works better with directories where access rights are more
137 restrictive than usual.
141 Several memory leaks in ithreads were closed.
145 C<PerlIO::scalar> now works better with non-default C<$/> settings.
149 You can now use the C<x> operator to demultiply a C<qw//> list. This used
150 to raise a syntax error.
154 =head2 More Unicode Fixes
160 chr() on a negative value now gives C<\x{FFFD}>, the Unicode replacement
161 character, unless when the C<bytes> pragma is in effect, where the low
162 eight bytes of the value are used.
166 =head1 New or Changed Diagnostics
168 =head2 Attempt to set length of freed array
170 This is a new warning, produced in situations like the following one:
172 $r = do {my @a; \$#a};
175 =head2 Search pattern not terminated or ternary operator parsed as search pattern
177 This syntax error indicates that the lexer couldn't find the final
178 delimiter of a C<?PATTERN?> construct. Mentioning the ternary operator in
179 this error message makes syntax diagnostic easier.
181 =head2 "%s" variable %s masks earlier declaration
183 This warning is now emitted in more consistent cases; in short, when one
184 of the declarations involved is a C<my> variable:
186 my $x; my $x; # warns
187 my $x; our $x; # warns
188 our $x; my $x; # warns
190 On the other hand, the following :
194 now gives a C<"our" variable %s redeclared> warning.
196 =head1 Changed Internals
202 The C<AvFLAGS> macro has been removed.
204 =head2 B:: modules inheritance changed
206 The inheritance hierarchy of C<B::> modules has changed; C<B::NV> now
207 inherits from C<B::SV> (it used to inherit from C<B::IV>).
209 =head1 Known Problems
211 =head2 Platform Specific Problems
213 =head1 Reporting Bugs
215 If you find what you think is a bug, you might check the articles
216 recently posted to the comp.lang.perl.misc newsgroup and the perl
217 bug database at http://bugs.perl.org/ . There may also be
218 information at http://www.perl.org/ , the Perl Home Page.
220 If you believe you have an unreported bug, please run the B<perlbug>
221 program included with your release. Be sure to trim your bug down
222 to a tiny but sufficient test case. Your bug report, along with the
223 output of C<perl -V>, will be sent off to perlbug@perl.org to be
224 analysed by the Perl porting team.
228 The F<Changes> file for exhaustive details on what changed.
230 The F<INSTALL> file for how to build Perl.
232 The F<README> file for general stuff.
234 The F<Artistic> and F<Copying> files for copyright information.