#!/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, $/ ; }