while () { s/#.*//; s/\s+\z//; my @ranges = map expand, split /\./, $_; my $iter = NestedLoops(\@ranges); while (my @parts = $iter->()) { my $ip = join('.', @parts); print("$ip\n"); } }