Commit | Line | Data |
1400179b |
1 | =head1 NAME |
2 | |
3 | perldelta - what is new for perl v5.9.1 |
4 | |
5 | =head1 DESCRIPTION |
6 | |
7 | This document describes differences between the 5.9.0 release and |
9b11ae5e |
8 | the 5.9.1 release. See L<perl590delta> for the differences between |
9 | 5.8.0 and 5.9.0. |
1400179b |
10 | |
11 | =head1 Incompatible Changes |
12 | |
13 | =head1 Core Enhancements |
14 | |
59f00321 |
15 | =head2 Lexical C<$_> |
16 | |
17 | The default variable C<$_> can now be lexicalized, by declaring it like |
18 | any other lexical variable, with a simple |
19 | |
20 | my $_; |
21 | |
22 | The operations that default on C<$_> will use the lexically-scoped |
23 | version of C<$_> when it exists, instead of the global C<$_>. |
24 | |
25 | In a C<map> or a C<grep> block, if C<$_> was previously my'ed, then the |
26 | C<$_> inside the block is lexical as well (and scoped to the block). |
27 | |
28 | In a scope where C<$_> has been lexicalized, you can still have access to |
29 | the global version of C<$_> by using C<$::_>, or, more simply, by |
30 | overriding the lexical declaration with C<our $_>. |
31 | |
1400179b |
32 | =head2 Tied hashes in scalar context |
33 | |
34 | As of perl 5.8.2, tied hashes did not return anything useful in scalar |
35 | context, for example when used as boolean tests: |
36 | |
37 | if (%tied_hash) { ... } |
38 | |
39 | The old nonsensical behaviour was always to return false, |
40 | regardless of whether the hash is empty or has elements. |
41 | |
42 | There is now an interface for the implementors of tied hashes to implement |
43 | the behaviour of a hash in scalar context, via the SCALAR method (see |
44 | L<perltie>). Without a SCALAR method, perl will try to guess whether |
45 | the hash is empty, by testing if it's inside an iteration (in this case |
46 | it can't be empty) or by calling FIRSTKEY. |
47 | |
f0f92e3c |
48 | =head2 Formats |
49 | |
50 | Formats were improved in several ways. A new field, C<^*>, can be used for |
51 | variable-width, one-line-at-a-time text. Null characters are now handled |
52 | correctly in picture lines. Using C<@#> and C<~~> together will now |
53 | produce a compile-time error, as those format fields are incompatible. |
54 | L<perlform> has been improved, and miscellaneous bugs fixed. |
55 | |
56 | =head2 The C<:unique> attribute is only meaningful for globals |
57 | |
58 | Now applying C<:unique> to lexical variables and to subroutines will |
59 | result in a compilation error. |
60 | |
fbb0b3b3 |
61 | =head2 Stacked filetest operators |
62 | |
63 | As a new form of syntactic sugar, it's now possible to stack up filetest |
64 | operators. You can now write C<-f -w -x $file> in a row to mean |
65 | C<-x $file && -w _ && -f _>. See L<perlfunc/-X>. |
66 | |
1400179b |
67 | =head1 Modules and Pragmata |
68 | |
f0f92e3c |
69 | =over 4 |
70 | |
71 | =item Carp |
72 | |
73 | The error messages produced by C<Carp> now include spaces between the |
74 | arguments in function argument lists: this makes long error messages |
75 | appear more nicely in browsers and other tools. |
76 | |
77 | =item Exporter |
78 | |
79 | C<Exporter> will now recognize grouping tags (such as C<:name>) anywhere |
80 | in the import list, not only at the beginning. |
81 | |
82 | =item FindBin |
83 | |
84 | A function C<again> is provided to resolve problems where modules in different |
85 | directories wish to use FindBin. |
86 | |
87 | =item List::Util |
88 | |
89 | You can now weaken references to read only values. |
90 | |
91 | =item threads::shared |
92 | |
93 | C<cond_wait> has a new two argument form. C<cond_timedwait> has been added. |
94 | |
95 | =back |
96 | |
1400179b |
97 | =head1 Utility Changes |
98 | |
99 | C<find2perl> now assumes C<-print> as a default action. Previously, it |
100 | needed to be specified explicitly. |
101 | |
f0f92e3c |
102 | A new utility, C<prove>, makes it easy to run an individual regression test |
103 | at the command line. C<prove> is part of Test::Harness, which users of earlier |
104 | Perl versions can install from CPAN. |
105 | |
106 | =head1 Documentation |
107 | |
108 | The documentation has been revised in places to produce more standard manpages. |
109 | |
110 | The long-existing feature of C</(?{...})/> regexps setting C<$_> and pos() |
111 | is now documented. |
1400179b |
112 | |
113 | =head1 Performance Enhancements |
114 | |
115 | =head1 Installation and Configuration Improvements |
116 | |
117 | =head1 Selected Bug Fixes |
118 | |
f0f92e3c |
119 | =head2 UTF8 bugs |
120 | |
121 | Using substr() on a UTF8 string could cause subsequent accesses on that |
122 | string to return garbage. This was due to incorrect UTF8 offsets being |
123 | cached, and is now fixed. |
124 | |
125 | join() could return garbage when the same join() statement was used to |
126 | process 8 bit data having earlier processed UTF8 data, due to the flags |
127 | on that statement's temporary workspace not being reset correctly. This |
128 | is now fixed. |
129 | |
130 | Using Unicode keys with tied hashes should now work correctly. |
131 | |
132 | chop() and chomp() used to mangle UTF8 strings. This has been fixed. |
133 | |
134 | =head2 Threading bugs |
135 | |
136 | Hashes with the C<:unique> attribute weren't made read-only in new |
137 | threads. They are now. |
138 | |
139 | =head2 More bugs |
140 | |
141 | C<$a .. $b> will now work as expected when either $a or $b is C<undef> |
142 | |
143 | Reading $^E now preserves $!. Previously, the C code implementing $^E |
144 | did not preserve C<errno>, so reading $^E could cause C<errno> and therefore |
145 | C<$!> to change unexpectedly. |
146 | |
147 | Reentrant functions will (once more) work with C++. 5.8.2 introduced a bugfix |
148 | which accidentally broke the compilation of Perl extensions written in C++ |
149 | |
1400179b |
150 | =head1 New or Changed Diagnostics |
151 | |
f0f92e3c |
152 | The fatal error "DESTROY created new reference to dead object" is now |
153 | documented in L<perldiag>. |
154 | |
155 | A new error, "%ENV is aliased to %s", is produced when taint checks are |
156 | enabled and when *ENV has been aliased (and thus doesn't reflect the |
157 | program's environment anymore.) |
158 | |
1400179b |
159 | =head1 Changed Internals |
160 | |
9b11ae5e |
161 | These news matter to you only if you either write XS code or like to |
162 | know about or hack Perl internals (using Devel::Peek or any of the |
163 | C<B::> modules counts), or like to run Perl with the C<-D> option. |
164 | |
165 | =head2 Reordering of SVt_* constants |
166 | |
167 | The relative ordering of constants that define the various types of C<SV> |
fa46452e |
168 | have changed; in particular, C<SVt_PVGV> has been moved before C<SVt_PVLV>, |
9b11ae5e |
169 | C<SVt_PVAV>, C<SVt_PVHV> and C<SVt_PVCV>. This is unlikely to make any |
170 | difference unless you have code that explicitly makes assumptions about that |
171 | ordering. (The inheritance hierarchy of C<B::*> objects has been changed |
172 | to reflect this.) |
173 | |
f0f92e3c |
174 | =head1 Configuration and Building |
175 | |
176 | C<Configure> now invokes callbacks regardless of the value of the variable |
177 | they are called for. Previously callbacks were only invoked in the |
178 | C<case $variable $define)> branch. This change should only affect platform |
179 | maintainers writing configuration hints files. |
180 | |
1400179b |
181 | =head1 New Tests |
182 | |
183 | =head1 Known Problems |
184 | |
185 | =head1 Platform Specific Problems |
186 | |
187 | =head1 Reporting Bugs |
188 | |
189 | If you find what you think is a bug, you might check the articles |
190 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
191 | bug database at http://bugs.perl.org/ . There may also be |
192 | information at http://www.perl.com/ , the Perl Home Page. |
193 | |
194 | If you believe you have an unreported bug, please run the B<perlbug> |
195 | program included with your release. Be sure to trim your bug down |
196 | to a tiny but sufficient test case. Your bug report, along with the |
197 | output of C<perl -V>, will be sent off to perlbug@perl.org to be |
198 | analysed by the Perl porting team. |
199 | |
200 | =head1 SEE ALSO |
201 | |
202 | The F<Changes> file for exhaustive details on what changed. |
203 | |
204 | The F<INSTALL> file for how to build Perl. |
205 | |
206 | The F<README> file for general stuff. |
207 | |
208 | The F<Artistic> and F<Copying> files for copyright information. |
209 | |
210 | =cut |