use Parallel::ForkManager (); my $pm = Parallel::ForkManager->new(3); foreach my $fw (qw(fw1 fw2 fw3 fw4 fw5)) { $pm->start and next; exec "remotelogfile $fw logfile > /var/$fw.log"; die("Unable to launch \"remotelogfile $fw\": $!\n"); }