On Jun 17, 7:51 pm, dery...@gmail.com ("C.DeRykus") wrote: > On Jun 16, 7:34 pm, knowsuperunkn...@gmail.com (Unknown User) wrote: > > > > > Hi > > > I wrote the following script to fork ssh processes with perl and > > Parallel::ForkManager: > > > #!/usr/local/bin/perl -w > > use strict; > > > my @cmd = "@ARGV"; > > use Parallel::ForkManager; > > my @nodes; > > open(NODE,"<list") || die "!$\n"; > > while(<NODE>) { > > chomp; > > push(@nodes,$_); > > > } > > > my $pm = new Parallel::ForkManager(10); # Max 10 procs > > for my $node(@nodes) { > > my $pid = $pm->start and next; > > my $res = `ssh $node "@cmd"`; > > print "$res"; > > $pm->finish; > > > } > > > This works pretty well, but Since There is More than One Way to DO it, > > i wonder if anyone has another version that does not use fork? > > IPC::Run is a possibility (although there's a fork under the > covers just as there is for the backtick command you're > using). > > From the IPC::Run doc: > > # Multiple children simultaneously (run() blocks until all > # children exit, use start() for background execution): > run \...@foo1, '&', \...@foo2; > > So, untested: > > use IPC::Run qw/run/; > > my @tasks; > for my $node(@nodes) { > my $task = sub { > my $res = qw{ ssh $node "@cmd" }; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ qx{ ... }
-- Charles DeRykus -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/