The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Array::Iter - Generate a coderef iterator for an array

VERSION

This document describes version 0.021 of Array::Iter (from Perl distribution Array-Iter), released on 2021-07-25.

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.

FUNCTIONS

array_iter($aryref) => coderef

list_iter(@elems) => coderef

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/Array-Iter.

SOURCE

Source repository is at https://github.com/perlancar/perl-Array-Iter.

BUGS

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Array-Iter

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

SEE ALSO

Array::Iterator, which creates (several kinds of) iterator objects. The module also lists some other related modules.

Other *::Iter modules to create simple (coderef) iterator: Range::Iter, IntRange::Iter, NumSeq::Iter.

AUTHOR

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2021, 2015 by perlancar@cpan.org.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.