Array-IntSpan
view release on metacpan or search on metacpan
lib/Array/IntSpan/IP.pm view on Meta::CPAN
sub new {
my $class = shift;
my(@temp) = @_;
foreach my $i (@temp) {
$i->[0] = &ip_as_int($i->[0]);
$i->[1] = &ip_as_int($i->[1]);
}
return $class->SUPER::new(@temp);
}
sub set_range {
my $self = shift;
my(@temp) = @_;
$temp[0] = &ip_as_int($temp[0]);
$temp[1] = &ip_as_int($temp[1]);
return $self->SUPER::set_range(@temp);
}
sub lookup {
my $self = shift;
my($key) = @_;
return $self->SUPER::lookup(&ip_as_int($key));
}
sub ip_as_int {
my($value) = @_;
if ($value =~ /^(\d{1,3}\.){3}(\d{1,3})$/) {
my(@values) = split(/\./, $value);
scalar(grep {$_ > 255} @values) and croak("Unable to parse '$value' as an IP address.");
return 16777216*$values[0]+65536*$values[1]+256*$values[2]+$values[3];
} elsif (length($value) == 4) {
( run in 0.249 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )