use constant TIMEOUT => 60; while (1) { for my $runCommand (@runArray) { $forkMgr->start($runCommand) and next; alarm(TIMEOUT); exec("/usr/localcw/opt/patrol/nagios/libexec/$runCommand") or die("exec: $!"); } $forkMgr->wait_all_children; sleep 10; }