Pipe::Tube::Csv - Csv processor tube in Pipe


Pipe-Tube-Csv documentation Contained in the Pipe-Tube-Csv distribution.

Index


Code Index:

NAME

Top

Pipe::Tube::Csv - Csv processor tube in Pipe

SYNPOSIS

Top

  my @resp = Pipe->for(@rows)->csv;

  my @resp = Pipe->cat("t/data/file1", "t/data/file2")->csv({ sep_char => "\t" });

DESCRIPTION

Top

The ->csv() call can get a HASH reference parameter, the same parameter as Text::CSV_XS would get. We pass it directly to that module.

Split up lines of csv file and return an array reference for each line.

TODO: use the first row as key names and on every other row return a hash of the values using the above header

AUTHOR

Top

Gabor Szabo <gabor@pti.co.il>

COPYRIGHT

Top

See Also

Top

Pipe and Text::CSV_XS


Pipe-Tube-Csv documentation Contained in the Pipe-Tube-Csv distribution.

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

our $VERSION = '0.01';

use base 'Pipe::Tube';
use Text::CSV_XS;
use Data::Dumper;


sub init {
    my ($self, $attr) = @_;
    die "First paramater of csv should be HASH reference or nothing" if $attr and ref $attr ne 'HASH';

    $self->logger("Receiving Csv definition: " . Dumper $attr);

    $self->{csv} = Text::CSV_XS->new($attr);
    return $self;
}

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

    my @resp;
    foreach my $line (@input) {
      $self->{csv}->parse($line);
      push @resp, [ $self->{csv}->fields ];
    }
    return @resp;
}

1;

__END__