for $i (
     [ -2,    2,    1], 
     [ -2,    2,    0], 
     [ -2,    2,   -1], 
     [ -2,    2,   10], 
     [  2,   -2,    1], 
     [  2,    2,    1], 
     [  2,    2,   -1], 
     [  2,    2,    0], 
     [  0,    0,    0], 
) {
    $iter = gen_seq(@$i);
    printf "start:%3d  stop:%3d  incr:%3d | ", @$i;
    printf "%4s", &$iter for 1..10;
    print "\n";
}

sub gen_seq {
    my($start,$stop,$increment) = @_;
    $n = 0;
    return sub {
        $term = $start + $n++ * $increment;
        return $term > $stop ? '' : $term;
    }
}