---
name: "Catmandu::Exporter::CSV"
section: "3pm"
platform: "linux"
package: "libcatmandu-perl"
version: "1.2024-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catmandu::Exporter::CSV"
---

# Catmandu::Exporter::CSV(3pm)

a CSV exporter

## NAME

Catmandu::Exporter::CSV - a CSV exporter

## SYNOPSIS

```
    # On the command line
    $ catmandu convert XSL to CSV < data.xls
    $ catmandu convert JSON to CSV --fix myfixes.txt --sep_char ';' < data.json
    # Provide a hint to the exporter which fields to export from the JSON
    # input. By default the CSV exporter will export the fields that are
    # found in the first JSON record.
    $ catmandu convert JSON to CSV --fields "id,title,year" < data.json
    # In a Perl script
    use Catmandu;
    my $exporter = Catmandu->exporter('CSV',
                fix => 'myfix.txt',
                quote_char => '"',
                sep_char => ',',
                escape_char => '"' ,
                always_quote => 1,
                header => 1);
    $exporter->fields("f1,f2,f3");
    $exporter->fields([qw(f1 f2 f3)]);
    $exporter->add_many($arrayref);
    $exporter->add_many($iterator);
    $exporter->add_many(sub { });
    $exporter->add($hashref);
    printf "exported %d items\n" , $exporter->count;
```

## DESCRIPTION

This `"Catmandu::Exporter"` exports items as rows with comma-separated values (CSV). Serialization is based on Text::CSV. A header line with field names will be included if option `"header"` is set. See Catmandu::TabularExporter on how to configure the field mapping and column names. Newlines and tabulator values in field values are escaped as `"\n"`, `"\r"`, and `"\t"`.

Hint: by default, the exporter will output all the fields that are found in the  first record of the data input. This can be changed by setting the `"fields"` option of the exporter.

## CONFIGURATION

- file

  Write output to a local file given by its path or file handle.  Alternatively a scalar reference can be passed to write to a string and a code reference can be used to write to a callback function.

- fh

  Write the output to an IO::Handle. If not specified, Catmandu::Util::io is used to create the output handle from the `"file"` argument or by using STDOUT.

- fix

  An ARRAY of one or more fixes or file scripts to be applied to exported items.

- encoding

  Binmode of the output stream `"fh"`. Set to "`":utf8"`" by default.

- sep\_char

  Column separator (`","` by default)

- quote\_char

  Quotation character (`"""` by default)

- escape\_char

  Character for escaping inside quoted field (`"""` by default)

- fields

  See Catmandu::TabularExporter.

- columns

  See Catmandu::TabularExporter.

- header

  Include a header line with column names. Enabled by default.

## METHODS

See Catmandu::TabularExporter, Catmandu::Exporter, Catmandu::Addable, Catmandu::Fixable, Catmandu::Counter, and Catmandu::Logger for a full list of methods.

## SEE ALSO

Catmandu::Importer::CSV, Catmandu::Exporter::Table Catmandu::Exporter::XLS
