The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Cinnamon::Runner;
use strict;
use warnings;

use Cinnamon::Logger;
use Cinnamon::Config;

sub start {
    my ($class, $hosts, $task, @args) = @_;

    my %result;
    for my $host (@$hosts) {
        $result{$host} = +{ error => 0 };

        eval { $task->($host, @args) };

        if ($@) {
            chomp $@;
            log error => sprintf '[%s] %s', $host, $@;
            $result{$host}->{error}++ ;
        }
    }

    \%result;
}

sub execute {
    my ($class, $host, $task, @args) = @_;
    $task->($host, @args);
}

!!1;