--- IP.pm +++ IP.pm @@ -416,7 +416,9 @@ sub intip { my $int = ip_bintoint($self->binip()); - if (!$int) { + # this then fails for 0.0.0.0, which is wrong. + # + if (not defined $int) { $self->{error} = $ERROR; $self->{errno} = $ERRNO; return; @@ -625,9 +627,11 @@ sub last_int { return ($self->{last_int}) if defined($self->{last_int}); - my $last_bin = $self->last_bin() or return; + my $last_bin = $self->last_bin(); + return unless defined $last_bin; - my $last_int = ip_bintoint($last_bin, $self->version()) or return; + my $last_int = ip_bintoint($last_bin, $self->version()); + return unless defined $last_int; $self->{last_int} = $last_int; @@ -1267,11 +1271,13 @@ sub ip_prefix_to_range { # Turn into a binary # Get last address # Turn into an IP - my $binip = ip_iptobin($ip, $ip_version) or return; + my $binip = ip_iptobin($ip, $ip_version); + return unless defined $binip; return unless (ip_check_prefix($binip, $len, $ip_version)); - my $lastip = ip_last_address_bin($binip, $len, $ip_version) or return; + my $lastip = ip_last_address_bin($binip, $len, $ip_version); + return unless defined $lastip; return unless ($lastip = ip_bintoip($lastip, $ip_version)); return ($ip, $lastip);