use Parallel::ForkManager; my $manager = new Parallel::ForkManager( 20 ); while (){ $manager->start and next; my (..., $ip, ...) = split( /\s+/, $_ ); print "ip ? $ip\n"; $manager->finish() if !$p->ping($ip); ... $manager->finish(); } print "flag\n";