use strict;
use warnings;
use Carp 'cluck';
sub make_incrementor {
my ($initial_value, $reset_value) = @_;
my $i = $initial_value;
sub {
if ($i == $reset_value) {
cluck('Iterator overuse');
$i = $initial_value;
}
return $i++;
}
}
sub test_incrementor {
my $foo_incrementor = make_incrementor(0,2);
print "call $_: got ", $foo_incrementor->(), "\n" for 1..3;
}
test_incrementor;
####
local *__ANON__ = "incrementor"
##
##
local *__ANON__ = "incrementor_init${initial_value}_reset$reset_value"