#!/usr/bin/perl # # example.pl # use strict; use warnings; use Algorithm::Iters qw( NestedIters ); sub returns_an_iter1 { my $i = 0; sub { $i == 3 ? undef : ++$i } } sub returns_an_iter2 { my @data = ('y', 'n'); sub { pop @data } } sub returns_an_iter3 { my $i = 0; sub { $i == 4 ? undef : ++$i * 7 } } sub print_values { local $, = ", "; local $\ = "\n"; print @_; } NestedIters( [ \&returns_an_iter1, \&returns_an_iter2, \&returns_an_iter3, ], \&print_values ); # Also works # ========== # # print("\n"); # # NestedIters( # [ # \&returns_an_iter1, # sub { [ 'y', 'n' ] }, # \&returns_an_iter3, # ], # \&print_values # ); # # print("\n"); # # NestedIters( # [ # \&returns_an_iter1, # [ 'y', 'n' ], # \&returns_an_iter3, # ], # \&print_values # );