... foreach (@jobs) { &process($_); } ... #### ... foreach (@jobs) { die "Fork failed: $!\n" unless defined (my $pid = fork); exit &process($_) unless $pid; } 1 until -1 == wait; ... #### ... my $max = 4; my $c = 0; foreach (@jobs) { wait unless ++$c <= $max; die "Fork failed: $!\n" unless defined (my $pid = fork); exit &process($_) unless $pid; } 1 until -1 == wait; ...