++ed by:
AERO

1 PAUSE user

Zoffix Znet

NAME

Mojo::CSV - no-nonsense CSV handling

SYNOPSIS

    # Just convert data to CSV and gimme it
    say Mojo::CSV->new->text([
        [ qw/foo bar baz/ ],
        [ qw/moo mar mer/ ],
    ]);

    my $data = Mojo::CSV->new->slurp('file.csv') # returns a Mojo::Collection
        ->grep(sub{ $_->[0] eq 'Zoffix' });

    my $csv = Mojo::CSV->new( in => 'file.csv' );
    while ( my $row = $csv->row ) {
        # Read row-by-row
    }

    # Write CSV file in one go
    Mojo::CSV->new->spurt( $data => 'file.csv' );

    # Write CSV file row-by-row
    my csv = Mojo::CSV->new( out => 'file.csv' );
    $csv->trickle( $row ) for @data;

DESCRIPTION

Read and write CSV (Comma Separated Values) like a boss, Mojo style.

METHODS

Unless otherwise indicated, all methods return their invocant.

flush

    $csv->flush;

Flushes buffer and closes "out" filehandle. Call this when you're done trickling data. This will be done automatically when the Mojo::CSV object is destroyed.

in

    my $csv = Mojo::CSV->new( in => 'file.csv' );

    $csv->in('file.csv');

    open my $fh, '<', 'foo.csv' or die $!;
    $csv->in( $fh );
    $csv->in( Mojo::Asset::File->new(path => 'file.csv') );
    $csv->in( Mojo::Asset::Memory->new->add_chunk('foo,bar,baz') );

Specifies the input for "slurp", "slurp_body" and "row". Takes a filename, an opened filehandle, a Mojo::Asset::File object, or a Mojo::Asset::Memory object.

new

    Mojo::CSV->new;
    Mojo::CSV->new( in => 'file.csv', out => 'file.csv' );

Creates a new Mojo::CSV object. Takes two optional arguments. See "in" and "out" for details.

out

    my $csv = Mojo::CSV->new( out => 'file.csv' );

    $csv->out('file.csv');

    open my $fh, '>', 'foo.csv' or die $!;
    $csv->out( $fh );

Specifies the output for "spurt" and "trickle". Takes either a filename or an opened filehandle.

row

    my $row = $csv->row;

Returns an arrayref, which is a row of data from the CSV. The thing to read must be first set with in method or in argument to "new"

slurp

    my $data = Mojo::CSV->new->slurp('file.csv');
    my $data = Mojo::CSV->new( in => 'file.csv' )->slurp;

Returns a Mojo::Collection object, each item of which is an arrayref representing a row of CSV data.

slurp_body

    my $data = Mojo::CSV->new->slurp_body('file.csv');

A shortcut for calling "slurp" and discarding the first row (use this for CSV with headers you want to get rid of).

spurt

    Mojo::CSV->new->spurt( $data => 'file.csv');
    Mojo::CSV->new( out => 'file.csv' )->spurt( $data );

Writes a data structure into CSV. $data is an arrayref of rows, which are themselves arrayrefs (each item is a cell data). It will call "flush" on completion. See also "trickle".

text

    say Mojo::CSV->new->text([qw/foo bar baz/]);

    say Mojo::CSV->new->text([
        [ qw/foo bar baz/ ],
        [ qw/moo mar mer/ ],
    ]);

Returns a CSV string. Takes either a single arrayref to encode just a single row or an arrayref of arrayrefs to include multiple rows. Arrayref-like things should work too.

trickle

    my $csv = Mojo::CSV->new( out => 'file.csv' );
    $csv->trickle( $_ ) for @data;

Writes out a single row of CSV. Takes an arrayref of cell values. Note that the writes may be buffered (see "flush")

SEE ALSO

Text::CSV, Text::xSV

REPOSITORY

Fork this module on GitHub: https://github.com/zoffixznet/Mojo-CSV

BUGS

To report bugs or request features, please use https://github.com/zoffixznet/Mojo-CSV/issues

If you can't access GitHub, you can email your request to bug-Mojo-CSV at rt.cpan.org

AUTHOR

LICENSE

You can use and distribute this module under the same terms as Perl itself. See the LICENSE file included in this distribution for complete details.