SYNOPSIS use Array::Iter qw(array_iter list_iter); my $iter = array_iter([1,2,3,4,5]); while (my $val = $iter->()) { ... } $iter = list_iter(1,2,3,4,5); while (my $val = $iter->()) { ... } DESCRIPTION This module provides a simple iterator which is a coderef that you can call repeatedly to get elements of a list/array. When the elements are exhausted, the coderef will return undef. No class/object involved. The principle is very simple and you can do it yourself with: my $iter = do { my $i = 0; sub { if ($i < @$ary) { return $ary->[$i++]; } else { return undef; } }; } Caveat: if list/array contains an undef element, it cannot be distinguished with an exhausted iterator. SEE ALSO Array::Iterator, which also lists some other related modules.