in reply to Adding an Entire Class B IP Range to an Array

As the range is just another representation of a count from 0 .. (256*256)-1 I thought a pack/unpack solution may be fun.

#!/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);
And I know the OP said he wanted all the vals in an array but for some an itterator that returns the next val or undef when all used up may be more useful so here is one for fun.
#!/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, $/ ; }

Cheers,
R.

Pereant, qui ante nos nostra dixerunt!