---
name: "YAML::PP::Emitter"
section: "3pm"
platform: "linux"
package: "perl-yaml-pp"
version: "0.43.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/YAML::PP::Emitter"
---

# YAML::PP::Emitter(3pm)

Emitting events

## NAME

YAML::PP::Emitter - Emitting events

## SYNOPSIS

```
    my $emitter = YAML::PP::Emitter->new(
        indent => 4,
    );
    $emitter->init;
    $emitter->stream_start_event;
    $emitter->document_start_event({ implicit => 1 });
    $emitter->sequence_start_event;
    $emitter->scalar_event({ value => $input, style => $style });
    $emitter->sequence_end_event;
    $emitter->document_end_event({ implicit => 1 });
    $emitter->stream_end_event;
    my $yaml = $emitter->writer->output;
    $emitter->finish;
```

## DESCRIPTION

The emitter emits events to YAML. It provides methods for each event type. The arguments are mostly the same as the events from YAML::PP::Parser.

## METHODS

- new

  ```
      my $emitter = YAML::PP::Emitter->new(
          indent => 4,
      );
  ```

  Constructor. Currently takes these options:

  - indent

    - writer

    - stream\_start\_event, stream\_end\_event, document\_start\_event, document\_end\_event, sequence\_start\_event, sequence\_end\_event, mapping\_start\_event, mapping\_end\_event, scalar\_event, alias\_event

  - indent, set\_indent

  Getter/setter for number of indentation spaces.

  TODO: Currently sequences are always zero-indented.

- writer, set\_writer

  Getter/setter for the writer object. By default YAML::PP::Writer. You can pass your own writer if you want to output the resulting YAML yourself.

- init

  Initialize

- finish
