こんな感じでGearmanに一気に仕事を依頼して、結果を待っていたら、 my $target = +[ { foo => 1, bar => 2, }, { foo => 1, bar => 2, }, ]; my $ts = Gearman::Client->new( job_servers => ['127.0.0.1'] )->new_task_set; my $id = 0; for my $target (@$targets) { $id++; my $arg = Data::MessagePack->pack({ hoge => $target->{foo}, moge => $target->{bar}, }); my $on_complete_code = sub { warn $id; $res->{$id} = Data::MessagePack->unpack(${$