use Parallel::ForkManager; $pm = new Parallel::ForkManager(100); my @all_data = qw/1/; foreach $data (@all_data) { # Forks and returns the pid for the child: my $pid = $pm->start; print "PID $pid\n"; $pid and next; print "$data", "\n"; while(){}; # 100% CPU $pm->finish; # Terminates the child process } $pm->wait_all_children;