http://qs321.pair.com?node_id=1213089


in reply to Re^2: Reacting to Mojo::UserAgent Errors
in thread Reacting to Mojo::UserAgent Errors

Am I missing something here?

Due to your misspelling, no IP address could be resolved.

$ua->get('mojoliciousness.org/perldoc')

returns an object of type Mojo::Transaction::HTTP which contains an attribute called  original_remote_address.
Checking if this attribute has a defined value should solve your problem.

use Mojo::UserAgent; # Fine grained response handling (dies on connection errors) + my $ua = Mojo::UserAgent->new; #my $res = $ua->get('mojoliciousness.org/perldoc')->result; + my $res = $ua->get('mojoliciousness.org/perldoc'); if (defined ($res->original_remote_address)) { if ($res->result->is_success) { print $res->result->body } elsif ($res->result->is_error) { print $res->result->message } elsif ($res->result->code == 301) { print $res->result->headers->l +ocation } else { print 'Whatever...' } print "remote address: ".$res->original_remote_address."\n"; } else { print "failed to resolve url ...\n"; } print "Got to the end\n";

Replies are listed 'Best First'.
Re^4: Reacting to Mojo::UserAgent Errors
by AlwaysSurprised (Novice) on Apr 18, 2018 at 15:06 UTC

    My bad. I shouldn't have used a misspelt domain to illustrate crashing the script.

    My script, crashes out at the get with errors of "inactivity timeout" or "premature connection close". I can't see an attribute to interogate to capture those and recover. At the moment, the get fails, the script halts and I'm staring at the command prompt (All hail the command prompt); I'm not getting as far as the if statement.