my $kids = 0; for ( 1..30 ) { if ( fork ) { waitpid(-1,0) && $kids++; } else { exec('scriptname') or die "Bad Things: $!; } } while ( $kids < 30 ) { waitpid(-1,0) && $kids++; sleep(1); }