You could use gearman to run commands (jobs) on many machines. the code part could be really simple:
use Gearman::Worker;
my $worker = Gearman::Worker->new;
$worker->job_servers('127.0.0.1');
$worker->register_function($funcname => &do_job);
$worker->work while 1;
sub do_job {
print "Do something!\n";
}
using_gearman_for_nightly_build_and_test
http://www.slideshare.net/andy.sh/gearman-and-perl
http://search.cpan.org/~dormando/Gearman-Server-1.11/gearmand