The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Getopt::ArgParse::ActionAppend;

use strict;
use warnings;
use Carp;

use Getopt::ArgParse::Parser;

sub apply {
    my $self = shift;

    my ($spec, $namespace, $values) = @_;

    my $v = $namespace->get_attr( $spec->{dest} );

    if ($spec->{type} == Getopt::ArgParse::Parser::TYPE_PAIR) {
        $v = {} unless defined $v;

        for my $pair (@$values) {
            my ($key, $val) = %$pair;
            $v->{$key} = $val;
        }

    } else {
        $v = [] unless defined $v;
        push @$v, @$values;
    }

    $namespace->set_attr( $spec->{dest}, $v );

    return '';
}

1;