Don't try to do this with fork and kill. Instead, take the path suggested in the earlier reply by rbc and use elements of the LWP package. It will take a little more work than the LWP::Simple-based example, but you can set a timeout on the user-agent object before sending the request, which is a better way of handling the 60-second limitation. You aren't doing anything else in that 60 seconds anyway, and trying to do this with fork and kill will mean setting up a $SIG{CHLD} handler, and I doubt you want to get into that mess.
Using the LWP classes is pretty simple:
use LWP::UserAgent;
use HTTP::Request;
$UA = LWP::UserAgent->new;
$UA->timeout(60);
$response = $UA->request(HTTP::Request->new('GET', $url);
# You may now operate on $response->content().
# Be certain you test for success with $response->is_success
--rjray
Update: I forgot to point out initially another flaw in the fork/kill approach. By running the wget in the child and assigning it to a variable within that child, the parent would not have access to that variable unless you wrote some IPC-management to share the memory between the child and parent processes. In other words, use LWP. You'll soon see why so many of us swear by it. |