Net-IP-Match-Trie

 view release on metacpan or  search on metacpan

lib/Net/IP/Match/Trie/PP.pm  view on Meta::CPAN


# name => [ cidr1, cidr2, ... ]
sub add {
    my($self, $name, $cidrs) = @_;

    my $ad;
    my $nm = 0xFFFFFFFF;

    ### name: $name
    for my $cidr (@$cidrs) {
        my($ip, $len) = split m{/}, $cidr, 2;
        $len ||= 32;
        ### cidr, ip, len: join ', ', $cidr, $ip, $len

        $ad = unpack "N", inet_aton($ip);
        $nm = itonetmask($len);
        ### ad   : sprintf "%08X", $ad
        ### nm   : sprintf "%08X", $nm

        $ad = $ad & ($nm & 0xFFFFFFFF);
        ### ad&nm: sprintf "%08X", $ad

lib/Net/IP/Match/Trie/XS.pm  view on Meta::CPAN

    my $self = bless {}, $class;
    $self->_initialize();
    return $self;
}

# name => [ cidr1, cidr2, ... ]
sub add {
    my($self, $name, $cidrs) = @_;

    for my $cidr (@$cidrs) {
        my($network, $netmask) = split m{/}, $cidr;
        $netmask ||= 32;
        $self->_add($name, $network, $netmask);
    }
}

sub impl {
    my($self) = @_;
    return "XS";
}



( run in 1.387 second using v1.01-cache-2.11-cpan-71847e10f99 )