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

# Catmandu::Importer::YAML(3pm)

Package that imports YAML data

## NAME

Catmandu::Importer::YAML - Package that imports YAML data

## SYNOPSIS

```
    # From the command line
    $ catmandu convert YAML to JSON < data.yaml
    # In a Perl script
    use Catmandu;
    my $importer = Catmandu->importer('YAML',file => "/foo/bar.yaml");
    my $n = $importer->each(sub {
        my $hashref = $_[0];
        # ...
    });
    The YAML input file needs to be separated into records:
    ---
    - recordno: 1
    - name: Alpha
    ---
    - recordno: 2
    - name: Beta
    ...
    where '---' is the record separator and '...' the EOF indicator.
```

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

## METHODS

Every Catmandu::Importer is a Catmandu::Iterable all its methods are inherited. The Catmandu::Importer::YAML methods are not idempotent: YAML feeds can only be read once.

## SEE ALSO

Catmandu::Exporter::YAML
