use Net::OpenSSH::Parallel; my $pssh = Net::OpenSSH::Parallel->new; for my $server (@targets) { $pssh->add_host($server); } $pssh->push('*', command => @stuff); $pssh->push('*', command => @more_stuff); $pssh->run; # ... $pssh->push('*', command => @even_more_stuff); $pssh->run;