A module does a very easy thing. It's an object that holds an array of data, and return them one by one on each invocation of next(). I'll probably add another interface to this module, like a stringify interface that returns stringified element: my $rr = Data::RoundRobin->new(qw(a b)); print "$rr"; # a print "$rr"; # b Or, I'll add a Tie interface that makes it looks like some infinite long array: tie @array,Data::RoundRobin; push @array,qw(a b); print $array[2]; # a print $array[65535]; # b They all look pretty cool.