#!/usr/bin/perl use warnings; use strict; my $base="192.168."; my @adds; for (1..65535){ $_=sprintf("%04x",$_); /(..)(..)/; $_=join".", unpack "S*",(pack "H4", "00$1").(pack "H4", "00$2"); push @adds, $base.$_ unless /255|\.0$/; } # lets look at a few print $adds[rand $#adds], $/ for (1..100); #### #!/usr/bin/perl use warnings; use strict; sub init_adds { my $base=shift; my $a=1; my $b=0; return sub { if ($a==255) { $b++; return undef if $b==256; $a=1; } return ("$base.$b.".$a++); } } my $gen=init_adds(192.168); while (my $val = &$gen) { print $val, $/ ; }