in reply to Where is LWP::Simple::get error information stored?
how can I programmatically determine errors like this from LWP?
The LWP::Simple POD for get explains:
You will not be able to examine the response code or response headers (like 'Content-Type') when you are accessing the web using this function. If you need that information you should use the full OO interface (see the LWP::UserAgent manpage).
However, there is (kinda) a way around it. If you look at getprint(), it returns an HTTP error code, but of course, you probably want the content in your program, not sent to stdout. So, the trick I've used in the past is to open a ramfile and select it before calling getprint(). That way you get the content into a variable and the status code:
my $content; open RAM, '>', \$content; my $stdoutsaved = select; select *RAM; my $status = getprint( $url ); select $stdoutsaved; close RAM; ## Now the status is in $status and the content in $content.
Quite why get() wasn't implement to return both:
my( $status, $content ) = get( $url );
I guess we'll never know, but it is unlikely to change now.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Where is LWP::Simple::get error information stored?
by ajam (Acolyte) on Sep 28, 2012 at 01:29 UTC | |
by BrowserUk (Patriarch) on Sep 28, 2012 at 18:31 UTC | |
by ajam (Acolyte) on Sep 28, 2012 at 20:16 UTC |