use strict; use warnings; sub gen_range_step { my ( $start,$stop,$step ) = @_ ; my $current = $start; return sub { my $val = $current; $current += $step; return $val if $val <=$stop; return; } } my $iter = gen_range_step(5,20,4); while ( my ($val) = $iter->() ) { print "$val\n"; } #### C:/Strawberry/perl/bin\perl.exe -w d:/tmp/pm/generator_iterator.pl 5 9 13 17 Compilation finished at Sat Nov 13 21:18:20