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
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.