use File::Copy; use Net::FTP; use Win32::Process; use File::Path; use LWP::UserAgent; use HTTP::Headers; use HTTP::Cookies; use HTTP::Response; . . . . #IMP: Below are the few request lines mainly the $res = $ua->request($req); statement which makes parent not to wait for the child processes ######## Process the URL response ua = new LWP::UserAgent; $ua->agent("$0/0.1 " . $ua->agent); $req = new HTTP::Request 'GET=> 'http://www.cpan.org/RECENT'; $req->header('Accept' => 'text/html'); # send request $res = $ua->request($req); my $url_response = $res->content; print $url_response . "\n"; print $res->status_line . "\n"; print $res->code . "\n"; . . . my @pids; # Process every Unlink item foreach $extractItem (@extractItemLines) { . . . . my $childpid = fork(); if ($childpid) { push @pids, $childpid; print "I am parent: $childpid\n\n"; } # elsif (defined $childpid) { elsif ($childpid==0) { exec($command); die "Error: Cannot exec EXTRACT command:'$command': $!\n"; print "I am child: $childpid\n\n"; } else { die "Error: Cannot fork EXTRACT process: $!\n" } ######### Check for successful execution #if ($? != 0) #{ # print "Error: $C4C_TCENG_DOWNLOAD_ITK exited with fatal error code.\n"; # die "Error: $C4C_TCENG_DOWNLOAD_ITK exited with fatal error code.\n"; #} print logFP "############## Processed $extractItem ################\n"; } # foreach $extractItem... #### wait for all extract processes to finish before zipping the directory waitpid($_,0) for @pids;