sub inblock-cidr { my ($block, $cidr, $target) = @_; my $result = 1; my $machinebits = (32 - $cidr); my $lip1 = unpack("N", pack("c4", split(/\D/, $block, 4))); my $lip2 = unpack("N", pack("c4", split(/\D/, $target, 4))); $result = 0 if (($lip1 >> $machinebits) != ($lip2 >> $machinebits)); return($result); } sub inblock-mask { my ($block, $mask, $target) = @_; my $result = 1; my $machinebits = unpack("N", pack("c4", split(/\D/, $mask, 4))); my $lip1 = unpack("N", pack("c4", split(/\D/, $block, 4))); my $lip2 = unpack("N", pack("c4", split(/\D/, $target, 4))); $result = 0 if (($lip1 & $machinebits) != ($lip2 & $machinebits)); return($result); } &inblock-cidr('10.0.0.0', 8, '10.13.23.42'); &inblock-mask('10.0.0.0', '255.0.0.0', '10.13.23.42');