geoipdb builder: separate into functions

This commit is contained in:
Jan Engelhardt
2011-01-27 02:55:10 +01:00
parent f180c0e5c6
commit 80444b0d31

View File

@@ -35,29 +35,44 @@ foreach (qw(LE BE)) {
} }
} }
while (my $row = $csv->getline(*ARGV)) { &collect();
if (!defined($country{$row->[4]})) { &dump();
$country{$row->[4]} = {
name => $row->[5], sub collect
pool_v4 => [], {
pool_v6 => [], while (my $row = $csv->getline(*ARGV)) {
}; if (!defined($country{$row->[4]})) {
$country{$row->[4]} = {
name => $row->[5],
pool_v4 => [],
pool_v6 => [],
};
}
my $c = $country{$row->[4]};
if ($row->[0] =~ /:/) {
push(@{$c->{pool_v6}},
[&ip6_pack($row->[0]), &ip6_pack($row->[1])]);
} else {
push(@{$c->{pool_v4}}, [$row->[2], $row->[3]]);
}
if ($. % 4096 == 0) {
print STDERR "\r\e[2K$. entries";
}
} }
my $c = $country{$row->[4]};
if ($row->[0] =~ /:/) { print STDERR "\r\e[2K$. entries total\n";
push(@{$c->{pool_v6}}, }
[&ip6_pack($row->[0]), &ip6_pack($row->[1])]);
} else { sub dump
push(@{$c->{pool_v4}}, [$row->[2], $row->[3]]); {
} foreach my $iso_code (sort keys %country) {
if ($. % 4096 == 0) { &dump_one($iso_code);
print STDERR "\r\e[2K$. entries";
} }
} }
print STDERR "\r\e[2K$. entries total\n"; sub dump_one
{
foreach my $iso_code (sort keys %country) { my $iso_code = shift @_;
my($file, $fh_le, $fh_be); my($file, $fh_le, $fh_be);
printf "%5u IPv6 ranges for %s %s\n", printf "%5u IPv6 ranges for %s %s\n",