| Pipe-Tube-Csv documentation | Contained in the Pipe-Tube-Csv distribution. |
Pipe::Tube::Csv - Csv processor tube in Pipe
my @resp = Pipe->for(@rows)->csv;
my @resp = Pipe->cat("t/data/file1", "t/data/file2")->csv({ sep_char => "\t" });
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
Gabor Szabo <gabor@pti.co.il>
Copyright 2006 by Gabor Szabo <gabor@pti.co.il>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://www.perl.com/perl/misc/Artistic.html
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__