You now know enough to follow the do_GET( ) and do_POST( ) functions introduced in Chapter 2, "Web Basics". Let's look at do_GET( ) first.
Start by loading the module, then declare the $browser variable that will hold the user agent. It's declared outside the scope of the do_GET( ) subroutine, so it's essentially a static variable, retaining its value between calls to the subroutine. For example, if you turn on support for HTTP cookies, this browser could persist between calls to do_GET( ), and cookies set by the server in one call would be sent back in a subsequent call.
use LWP; my $browser; sub do_GET {
Next, create the user agent if it doesn't already exist:
$browser = LWP::UserAgent->new( ) unless $browser;
Enable proxying, if you're behind a firewall:
$browser->env_proxy();
Then perform a GET request based on the subroutine's parameters:
my $response = $browser->request(@_);
In list context, you return information provided by the response object: the content, status line, a Boolean indicating whether the status meant success, and the response object itself:
return($response->content, $response->status_line, $response->is_success, $response) if wantarray;
If there was a problem and you called in scalar context, we return undef:
return unless $response->is_success;
Otherwise we return the content:
return $response->content; }
The do_POST( ) subroutine is just like do_GET( ), only it uses the post( ) method instead of get( ).
The rest of this chapter is a detailed reference to the two classes we've covered so far: LWP::UserAgent and HTTP::Response.