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.431 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )