foreach (@subtask1) { fork; # do subtask1 } wait; # for all subtasks to finish foreach (@subtask2) { fork; # do subtask2 } wait; # for all subtasks to finish repeat for subtaskX