local (%rc, $running); # turn off stdout buffering $| = 1; # catch return codes local $SIG{CHLD} = sub { $rc{wait()} = $?; --$running; }; foreach my $wks (@wkslist) { if ( my $pid = fork() ) { # parent ++$running; } else { # child print "rshing to $wks\n"; exec($rsh_cmd, $wks, "ls"); } } sleep while ($running);