$ perl -le' use Socket; sub IP_iter { my ( $start, $end ) = map unpack( "N", inet_aton $_ ), @_; my $count; sub { $count = shift; $count = $count > $end - $start ? $end - $start + 1 : $count; return map inet_ntoa( inet_aton $start++ ), 1 .. $count; } } my $ip = IP_iter "1.1.1.1", "1.1.1.12"; print for $ip->( 5 ); print ""; print for $ip->( 5 ); ' 1.1.1.1 1.1.1.2 1.1.1.3 1.1.1.4 1.1.1.5 1.1.1.6 1.1.1.7 1.1.1.8 1.1.1.9 1.1.1.10