Catmandu::Importer::CSV - Package that imports CSV data
Contents
Configuration
file
Read input from a local file given by its path. Alternatively a scalar reference can be passed to
read from a string.
fh Read input from an IO::Handle. If not specified, Catmandu::Util::io is used to create the input
stream from the "file" argument or by using STDIN.
encoding
Binmode of the input stream "fh". Set to ":utf8" by default.
fix An ARRAY of one or more fixes or file scripts to be applied to imported items.
fields
List of fields to be used as columns, given as array reference, comma-separated string, or hash
reference. If "header" is 0 and "fields" is "undef" the fields will be named by column index ("0",
"1", "2", ...).
header
Read fields from a header line with the column names, if set to 1 (the default).
sep_char
Column separator ("," by default)
quote_char
Quotation character (""" by default)
escape_char
Character for escaping inside quoted field (""" by default)
allow_loose_quotes
allow_loose_escapes
Allow common bad-practice in CSV escaping
Description
The package imports comma-separated values (CSV). The object fields are read from the CSV header line or
given via the "fields" parameter. Strings in CSV are quoted by "quote_char" and fields are separated by
"sep_char".
Methods
Every Catmandu::Importer is a Catmandu::Iterable all its methods are inherited. The methods are not
idempotent: CSV streams can only be read once.
Name
Catmandu::Importer::CSV - Package that imports CSV data
See Also
Catmandu::Exporter::CSV, Catmandu::Importer::XLS
perl v5.40.0 2025-01-17 Catmandu::Importer::CSV(3pm)
Synopsis
# From the command line
# convert a CSV file to JSON
catmandu convert CSV to JSON < journals.csv
# set column names if CSV file has no header line
echo '12157,"The Journal of Headache and Pain",2193-1801' | \
catmandu convert CSV --header 0 --fields 'id,title,issn' to YAML
# set field separator and quote character
echo '12157;$The Journal of Headache and Pain$;2193-1801' | \
catmandu convert CSV --header 0 --fields 'id,title,issn' --sep_char ';' --quote_char '$' to XLSX --file journal.xlsx
# In a Perl script
use Catmandu;
my $importer = Catmandu->importer('CSV', file => "/foo/bar.csv");
my $n = $importer->each(sub {
my $hashref = $_[0];
# ...
});
