summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYves Orton <demerphq@gmail.com>2022-04-14 06:29:04 +0200
committerKarl Williamson <khw@cpan.org>2022-04-19 05:41:19 -0600
commit7e7acb3693b3c128124ce984285dfb14c7015247 (patch)
tree8c4246dbae108fb12e4f5f3417b064b05a846747
parent2cba836215fb7e9ed9fea15279702dc683b1a088 (diff)
downloadperl-7e7acb3693b3c128124ce984285dfb14c7015247.tar.gz
regen/mph.pl - move bucket info construction log into a sub
In a follow up patch this logic will get called from more than one place so move it to a sub so it can be used easily.
-rw-r--r--regen/mph.pl17
1 files changed, 10 insertions, 7 deletions
diff --git a/regen/mph.pl b/regen/mph.pl
index e859d4fbb5..698201e16b 100644
--- a/regen/mph.pl
+++ b/regen/mph.pl
@@ -118,13 +118,7 @@ sub build_perfect_hash {
my %seen;
next SEED2 if grep { $second_level[$_] || $seen{$_}++ } @idx;
$first_level[$first_idx]= $seed2;
- @second_level[@idx]= map {
-
- +{
- key => $_,
- seed2 => 0,
- }
- } @$keys;
+ @second_level[@idx]= map { _make_bucket_info($_) } @$keys;
last;
}
}
@@ -141,6 +135,15 @@ sub build_perfect_hash {
return $seed1, \@second_level;
}
+sub _make_bucket_info {
+ my ($key)= @_;
+ return +{
+ key => $key,
+ seed2 => undef, # will be filled in later
+ idx => undef, # will be filled in later
+ };
+}
+
sub _sort_keys_longest_first {
my ($hash)= shift;
my @keys= sort { length($b) <=> length($a) || $a cmp $b } keys %$hash;