use Parallel::ForkManager; my $manager = new Parallel::ForkManager( 20 ); while (){ $manager->start and next; my @array = split( /\s+/, $_ ); print "ip ? $array[1]\n"; unless ($p->ping($array[1])) {next; print "line\n"} etc... } print "flag\n"; $manager->finish(\&next); print "flag2 \n";