my @items = (1,5,6,3,5,2,4); my $index = -1; sub add_item { push @items, @_; } sub do_next { if (@items) { $index = ($index+1) % @items; do_something($items[$index]); } else { $index = -1; } }