my @items = (1,5,6,3,5,2,4);
my $index = 0;
sub do_next
{
do_something($items[$index]);
$index = ($index+1) % @items;
}
####
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;
}
}
####
sub remove_item
{
my %del = map {$_=>1} @_;
my @part_1 =
grep { !exists $del{$_} } @items[0..$index];
my @part_2 =
grep { !exists $del{$_} } @items[$index+1..$#items];
$index = $#part_1;
@items = (@part_1, @part_2);
}