$navigation_map = {
first_page => {
PREVIOUS => '',
NEXT => 'second_page',
},
second_page => {
PREVIOUS => 'first_page',
NEXT => 'third_page',
},
third_page => {
PREVIOUS => 'second_page',
NEXT => 'fourth_page',
},
fourth_page => {
PREVIOUS => 'third_page',
NEXT => '',
},
};
####
$navigation_map = [qw(first_page second_page third_page fourth_page)];
##
##
package List::Navigator;
sub new
{
my $class = shift;
my ($list) = @_;
my $data = {};
my ($previous, $next);
for my $item (@$list)
{
$data->{$item}{PREVIOUS} = $previous;
$data->{$previous}{NEXT} = $item if defined $previous;
$previous = $item;
}
bless $data, $class;
}
##
##
my $nav_list = [qw( first_page second_page third_page fourth_page )];
my $navigation_map = List::Navigator->new( $nav_list );