/usr/local/CPAN/Pipe/Pipe/Tube/Tuple.pm


package Pipe::Tube::Tuple;
use strict;
use warnings;

use base 'Pipe::Tube';

sub init {
    my ($self, @arrays) = @_;
    $self->{sources} = \@arrays;
    $self->{current_index} = 0;

    my $l = 0;
    $l = ($l > @$_ ? $l : @$_) for @arrays;
    $self->{longest_array} = $l;

    $self->logger("The tuple received " . @arrays . " sources");
    return $self;
}

sub run {
    my ($self) = @_;

    return if $self->{current_index} >= $self->{longest_array};

    my @tuple;
    foreach my $source (@{ $self->{sources} }) {
      push @tuple, $source->[ $self->{current_index} ];
    }
    $self->{current_index}++;
    return \@tuple;
}


1;