in reply to Linked-list Style Data Structure

It seems you could just use an array with a current position marker.
sub new { die "bad param count" unless 2 == @_; my ($me, $arr_ref) = @_; bless { current => 0, data => $arr_ref}, ref $me ||$me; }