# for 192.168.*.* my @netmask_a = qw ( 255 255 0 0 ); my @sample_a = qw ( 192 168 0 0 ); my $netmask = unpack("N", pack("C*", @netmask_a)); my $sample = unpack("N", pack("C*", @sample_a)); my $addr = int rand(2**32); $addr &= ~ $netmask; $addr ^= $sample; # Dotted quad form: my $dottedaddr = join(".", unpack("C*", pack("N", $addr)));