my $notes = My::Dashboard::Note->list; while ($notes->load_next){ print $notes->headline, $notes->created, $notes->body; } #### sub load_next{ my ($self, %arguments) = @_; my @next = @{$self->storage_next_list}; my $new_self = shift @next or return; %{$self} = %{$new_self}; $self->storage_next_list(list=>\@next); return $self; } sub storage_next_list{ my ($self, %arguments) = @_; $self->{storage}{next} = $arguments{list} if exists $arguments{list}; return $self->{storage}{next}; }