Kevin Pfeiffer wrote: > > Here's my less clever (and slower?) method... > > my @start_addr = split /\./, $start_address; > my @finish_addr = split /\./, $finish_address; > my @result = @start_addr; > > print join ".", @result, "\n"; # first number > > while (1) { > $result[3]++; # increment "ones" by 1 > my $value = join ".", @result; # output new number > print $value, "\n" ; > last if $value eq $finish_address; > > if ($result[3] == 254) { # need to do carryover > my $x; > for ($x = 3; $x > -1; $x--) { > if ($result[$x] == 254) { > $result[$x -1]++; # carry over to next column > $result[$x] = 0; # reset column > } > } > } > } > > print "\n"; > > __END__ > (Comments, suggestions always welcome.)
A small addition to my original post gives the results you want: use Socket; my $netmask = 0xFFFFFF00; # 255.255.255.0 my $start_address = unpack 'N', inet_aton( '10.11.1.14' ); my $finish_address = unpack 'N', inet_aton( '12.13.2.3' ); for my $address ( $start_address .. $finish_address ) { next if ( $address & $netmask ) == $address or ( $address & ~$netmask ) == ~$netmask; print inet_ntoa( pack 'N', $address ); } John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]