Dai Okabayashi > Sub-Sequence-0.03 > Sub::Sequence

Download:
Sub-Sequence-0.03.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.03   Source  

NAME ^

Sub::Sequence - simplest, looping over an array in chunks

SYNOPSIS ^

    use Sub::Sequence;

    my @user_id_list = (1..10_000_000);

    seq \@user_id_list, 50, sub {
        my $list = shift;

        my $in_id = join ',', map { int $_; } @{$list};
        # UPDATE table SET status=1 WHERE id IN ($id_cond)
        sleep 1;
    };

DESCRIPTION ^

Sub::Sequence provides the function named 'seq'. You can treat an array with simple interface.

FUNCTIONS ^

seq($array_ref, $n, \&code)

This function calls \&code with split array. And \&code takes $n items at a time(also give $step_count and $offset).

    use Sub::Sequence;
    use Data::Dumper;

    my $result = seq [1, 2, 3, 4, 5], 2, sub {
        my ($list, $step, $offset) = @_;
        # ... Do something ...
        return $offset;
    };

    warn Dumper($result); # [ 0, 2, 4 ]

NOTE: Return value of seq is the array reference of return values of \&code in scalar context. However, seq was called in the list context, then return value is the flatten list.

    use Sub::Sequence;
    use Data::Dumper;

    # scalar context
    my $foo = seq [1, 2, 3, 4, 5], 2, sub {
        my @list = @{ $_[0] };
        return \@list;
    };
    warn Dumper($foo); # [ [1, 2], [3, 4], [5] ]

    # list context
    my @bar = seq [1, 2, 3, 4, 5], 2, sub {
        my @list = @{ $_[0] };
        return \@list;
    };
    warn Dumper(\@bar); # [ 1, 2, 3, 4, 5 ]

REPOSITORY ^

Sub::Sequence is hosted on github <http://github.com/bayashi/Sub-Sequence>

AUTHOR ^

Dai Okabayashi <bayashi@cpan.org>

SEE ALSO ^

An interface of this module was inspired by Sub::Retry.

Also check similar modules, Iterator::GroupedRange and natatime method in List::MoreUtils.

Lastly, see benchmark.pl (Sub::Sequence vs splice vs natatime) in samples directory.

LICENSE ^

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.

syntax highlighting: