List::Rotation allows to loop (Cycle, Alternate or Toggle) through a list of values via a singleton object implemented as closure.
SYNOPSIS
use List::Rotation;
my @array = qw( A B C );
my $first_cycle = List::Rotation::Cycle->new(@array);
my $second_cycle = List::Rotation::Cycle->new(@array); ## the same object is returned as above
print $first_cycle->next; ## prints A
print $second_cycle->next; ## prints B
print $first_cycle->next; ## prints C
print $second_cycle->next; ## prints A, looping back to beginning
my $alternation = List::Rotation::Alternate->new( qw( odd even ) );
print $alternation->next; ## prints odd
print $alternation->next; ## prints even
print $alternation->next; ## prints odd
$alternation->reset; ## reset the alternation to first item
print $alternation->next; ## prints odd
my $switch = List::Rotation::Toggle->new;
## prints even numbers between 2 and 10
foreach ( 2..10 ) {
print "$_n" if $switch->next;
}
Use List::Rotation to loop through a list of values. Once you get to the end of the list, you go back to the beginning.
List::Rotation is implemented as a Singleton Pattern. You always just get 1 (the very same) Rotation object even if you use the new method several times with the same set of parameters. This is done by using Memoize on the new method. It returns the same object for every use of new that comes with the same list of parameters.
The class List::Rotation contains three subclasses:
List::Rotation::Cycle
Loop through a list of arbitrary values. The list must not be empty.
List::Rotation::Alternate
Alternate two values.
List::Rotation::Toggle
Toggle between true and false.
Product's homepage
Requirements:
· Perl