Foreach item in the array, start a fork. $pid returns 0 if it is the child process. This way you can spawn 4 child processes from one parent. This page explains it all and the code shown below is an adaptation of code shown from the link. I just added code to show the current process id and the process id of the child.
#!/usr/bin/perl use strict; use warnings; my @seq = qw/one two three four/; my @childs = (); warn "Starting on $$\n"; foreach my $seq (@seq){ print "#$seq\n"; my $pid = fork(); warn "Currently $$: created new fork on $pid\n"; if ($pid) { # parent warn "\tPushing $pid into array\n"; push(@childs, $pid); } elsif ($pid == 0) { # child warn "\tRunning child process for $seq\n"; exit(0); } else { die "Couldn't fork: $!\n"; } } foreach my $pid (@childs) { waitpid($pid, 0); } print "Done\n";

This work is licensed under a Creative Commons
Attribution 4.0 International License.