@@ -107,8 +107,18 @@ BEGIN
107
107
" 5.39" => [ +V5_39 ],
108
108
# using 5.41 features bundle
109
109
" 5.41" => [ +V5_41 ],
110
+ # using 41 features bundle
111
+ " 41" => [ +V5_41 ],
110
112
);
111
113
114
+ # actually, 5.9.5 ends up between 5.41 and 41
115
+ sub as_bundles {
116
+ $a eq ' default' ? -1 : $b eq ' default' ? 1 # default first
117
+ : $a eq ' all' ? 1 : $b eq ' all' ? -1 # all last
118
+ : $a =~ / \. / ? $b =~ / \. / ? $a cmp $b : -1 # 5.x in order, before
119
+ : $b =~ / \. / ? 1 : $a <=> $b ; # integers in order
120
+ }
121
+
112
122
my @noops = qw( postderef lexical_subs ) ;
113
123
my @removed = qw( array_base switch ) ;
114
124
@@ -128,13 +138,18 @@ BEGIN
128
138
}
129
139
130
140
for (keys %feature_bundle ) {
131
- next unless / ^5\. (\d *[13579])\z / ;
132
- $feature_bundle {" 5." .($1 +1)} ||= $feature_bundle {$_ };
141
+ if (/ ^5\. (\d *[13579])\z / ) { # 5.x dev series
142
+ $feature_bundle {" 5." .($1 +1)} ||= $feature_bundle {$_ };
143
+ }
144
+ elsif (/ ^([4-9][13579]|[1-9][0-9]+[13579])\z / ) { # 41 and above
145
+ $feature_bundle {($1 +1)} ||= $feature_bundle {$_ };
146
+ }
133
147
}
148
+ delete $feature_bundle {" 5.42" }; # this one does not exist
134
149
135
150
my %UniqueBundles ; # "say state switch" => 5.10
136
151
my %Aliases ; # 5.12 => 5.11
137
- for ( sort keys %feature_bundle ) {
152
+ for ( sort as_bundles keys %feature_bundle ) {
138
153
my $value = join (' ' , sort @{$feature_bundle {$_ }});
139
154
if (exists $UniqueBundles {$value }) {
140
155
$Aliases {$_ } = $UniqueBundles {$value };
@@ -146,8 +161,7 @@ BEGIN
146
161
# start end
147
162
my %BundleRanges ; # say => ['5.10', '5.15'] # unique bundles for values
148
163
for my $bund (
149
- sort { $a eq ' default' ? -1 : $b eq ' default' ? 1 : $a cmp $b }
150
- values %UniqueBundles
164
+ sort as_bundles values %UniqueBundles
151
165
) {
152
166
next if $bund =~ / [^\d .]/ and $bund ne ' default' ;
153
167
for (@{$feature_bundle {$bund }}) {
@@ -193,7 +207,7 @@ BEGIN
193
207
die " No HINT_UNI_8_BIT defined in perl.h" unless $Uni8Bit ;
194
208
195
209
my @HintedBundles =
196
- (' default' , grep !/[^\d.]/, sort values %UniqueBundles );
210
+ (' default' , grep !/[^\d.]/, sort as_bundles values %UniqueBundles );
197
211
198
212
199
213
# ##########################################################################
@@ -240,7 +254,7 @@ sub longest {
240
254
}
241
255
print $pm " );\n\n " ;
242
256
243
- for (sort keys %Aliases ) {
257
+ for (sort as_bundles keys %Aliases ) {
244
258
print $pm
245
259
qq' \$ feature_bundle{"$_ "} = \$ feature_bundle{"$Aliases {$_ }"};\n ' ;
246
260
};
@@ -277,7 +291,7 @@ sub longest {
277
291
$: :bundle, $: :feature
278
292
.
279
293
280
- for (' default' , sort grep /\.\d [02468]/, keys %feature_bundle ) {
294
+ for (' default' , sort as_bundles grep /[02468]\z /, keys %feature_bundle ) {
281
295
$: :bundle = " :$_ " ;
282
296
$: :feature = join ' ' , @{$feature_bundle {$_ }};
283
297
write $pm ;
0 commit comments