#!/usr/bin/perl use File::Cache; $address_path = "C:/Temp/address.txt"; $command = "ping.exe"; $max_processes = 2; $cache = new File::Cache( { namespace => 'ping', expires_in => 3600, filemode => 0666 } ); if ( not open(ADDRESS, $address_path) ) { die "Cannot open source file"; die; } $i = 0; while ( $temp =
) { chomp($temp); push( @address, $temp ); $i++; } $processes = 0; $i = 0; while ( $i < @address ) { if ( $processes < $max_processes ) { if ( $pid = fork() ) { $processes++; $i++; } elsif ( defined $pid ) { $command .= " $address[$i]"; @list = qx/$command/; if ( $list[10] =~ /\s(\d+)\%/ ) { $temp = $1; } $cache->set( $i, $address[$i]. ";" . $temp ); exit; } } else { wait(); $processes--; } }