Commit | Line | Data |
---|---|---|
7120b314 NC |
1 | =head1 NAME |
2 | ||
3 | perldelta - what is new for perl v5.11.0 | |
4 | ||
5 | =head1 DESCRIPTION | |
6 | ||
7 | This document describes differences between the 5.10.0 and the 5.11.0 | |
9948897e | 8 | development releases. |
7120b314 NC |
9 | |
10 | =head1 Incompatible Changes | |
11 | ||
8b8da387 RGS |
12 | =head2 Switch statement changes |
13 | ||
14 | The handling of complex expressions by the C<given>/C<when> switch | |
1710b4c0 | 15 | statement has been enhanced. There are two new cases where C<when> now |
8b8da387 RGS |
16 | inteprets its argument as a boolean, instead of an expression to be used |
17 | in a smart match: | |
18 | ||
19 | =over 4 | |
20 | ||
8b8da387 RGS |
21 | =item flip-flop operators |
22 | ||
23 | The C<..> and C<...> flip-flop operators are evaluated in boolean context, | |
24 | following their usual semantics; see L<perlop/"Range Operators">. | |
25 | ||
26 | =item defined-or operator | |
27 | ||
28 | A compound expression involving the defined-or operator, as in | |
29 | C<when (expr1 // expr2)>, will be treated as boolean if the first | |
30 | expression is boolean. (This just extends the existing rule that applies | |
31 | to the regular or operator, as in C<when (expr1 || expr2)>.) | |
32 | ||
33 | =back | |
34 | ||
35 | The next paragraph details more changes brought to the semantics to | |
36 | the smart match operator, that naturally also modify the behaviour | |
37 | of the switch statements where smart matching is implicitly used. | |
38 | ||
39 | =head2 Smart match changes | |
40 | ||
41 | =head3 Changes to type-based dispatch | |
42 | ||
43 | The smart match operator C<~~> is no longer commutative. The behaviour of | |
44 | a smart match now depends primarily on the type of its right hand | |
45 | argument. While the general backwards compatibility is maintained, | |
46 | several changes must be noted: | |
47 | ||
48 | =over 4 | |
49 | ||
50 | =item * | |
51 | ||
52 | Code references with an empty prototype are no longer treated specially. | |
53 | They are passed an argument like the other code references (even if they | |
54 | choose to ignore it). | |
55 | ||
56 | =item * | |
57 | ||
58 | C<%hash ~~ sub {}> and C<@array ~~ sub {}> now test that the subroutine | |
59 | returns a true value for each key of the hash (resp. element of the | |
60 | array), instead of passing the whole hash or array as a reference to | |
61 | the subroutine. | |
62 | ||
63 | =item * | |
64 | ||
65 | C<undef ~~ %hash> is always false (since C<undef> can't be a key in a | |
66 | hash). No implicit conversion to C<""> is done (as was the case in perl | |
67 | 5.10.0). | |
68 | ||
69 | =item * | |
70 | ||
71 | C<$scalar ~~ @array> now always distributes the smart match across the | |
72 | elements of the array. It's true if one element in @array verifies | |
73 | C<$scalar ~~ $element>. This is a generalization of the old behaviour | |
74 | that tested whether the array contained the scalar. | |
75 | ||
76 | =back | |
77 | ||
78 | The full dispatch table for the smart match operator is given in | |
79 | L<perlsyn/"Smart matching in detail">. | |
80 | ||
81 | =head3 Smart match and overloading | |
82 | ||
83 | According to the rule of dispatch based on the rightmost argument type, | |
84 | when an object overloading C<~~> appears on the right side of the | |
85 | operator, the overload routine will always be called (with a 3rd argument | |
86 | set to a true value, see L<overload>.) However, when the object will | |
87 | appear on the left, the overload routine will be called only when the | |
88 | rightmost argument is a scalar. This way distributivity of smart match | |
89 | across arrays is not broken, as well as the other behaviours with complex | |
90 | types (coderefs, hashes, regexes). Thus, writers of overloading routines | |
91 | for smart match need to worry only with comparing against a scalar, and | |
92 | possibly with stringification overloading; the other cases will be | |
93 | automatically handled consistently. | |
94 | ||
95 | C<~~> will now refuse to work on objects that do not overload it (in order | |
96 | to avoid relying on the object's underlying structure). | |
97 | ||
7120b314 NC |
98 | =head1 Core Enhancements |
99 | ||
1839a850 RGS |
100 | =head1 The C<overloading> pragma |
101 | ||
102 | This pragma allows you to lexically disable or enable overloading | |
103 | for some or all operations. (Yuval Kogman) | |
104 | ||
7120b314 NC |
105 | =head1 Modules and Pragmata |
106 | ||
1839a850 RGS |
107 | =head2 Pragmata Changes |
108 | ||
109 | =over 4 | |
110 | ||
111 | =item C<overloading> | |
112 | ||
113 | See L</"The C<overloading> pragma"> above. | |
114 | ||
115 | =back | |
116 | ||
7120b314 NC |
117 | =head1 Utility Changes |
118 | ||
119 | =head1 Documentation | |
120 | ||
121 | =head1 Performance Enhancements | |
122 | ||
123 | =head1 Installation and Configuration Improvements | |
124 | ||
125 | =head1 Selected Bug Fixes | |
126 | ||
54ad55c5 RGS |
127 | =over 4 |
128 | ||
129 | =item C<-I> on shebang line now adds directories in front of @INC | |
130 | ||
131 | as documented, and as does C<-I> when specified on the command-line. | |
132 | (Renée Bäcker) | |
133 | ||
134 | =back | |
135 | ||
7120b314 NC |
136 | =head1 New or Changed Diagnostics |
137 | ||
138 | =head1 Changed Internals | |
139 | ||
140 | =head1 Known Problems | |
141 | ||
142 | =head2 Platform Specific Problems | |
143 | ||
144 | =head1 Reporting Bugs | |
145 | ||
146 | If you find what you think is a bug, you might check the articles | |
147 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
148 | bug database at http://bugs.perl.org/ . There may also be | |
149 | information at http://www.perl.org/ , the Perl Home Page. | |
150 | ||
151 | If you believe you have an unreported bug, please run the B<perlbug> | |
152 | program included with your release. Be sure to trim your bug down | |
153 | to a tiny but sufficient test case. Your bug report, along with the | |
154 | output of C<perl -V>, will be sent off to perlbug@perl.org to be | |
155 | analysed by the Perl porting team. | |
156 | ||
157 | =head1 SEE ALSO | |
158 | ||
159 | The F<Changes> file for exhaustive details on what changed. | |
160 | ||
161 | The F<INSTALL> file for how to build Perl. | |
162 | ||
163 | The F<README> file for general stuff. | |
164 | ||
165 | The F<Artistic> and F<Copying> files for copyright information. | |
166 | ||
167 | =cut |