use Parallel::ForkManager; use File::Copy; my $fm = Parallel::ForkManager->new(5); for (@ARGV) { $fm->start and next; if (system("spamc -c < $_")) { (my $newname = $_) =~ s/:.*//; move $_, "/home/juerd/Mail/spam/new/$newname" or die $!; } $fm->finish; }