Wie kann ich fangen eine "failed to decode JSON" Fehlermeldung in Perl?

So, ich bin versucht, laden testen einer REST-API gibt JSON-Wert.

Zu tun, dass ich das erstellen mehrerer Instanzen des perl-Skripts.

Dem Perl-script im Grunde ruft diese URL auf und versucht decode_json. Natürlich, wenn erhebliche Last erzeugt wird, schlägt es fehl.

Nun das problem, das ich konfrontiert ist - Ein Fehler wird angezeigt, auf Eingabeaufforderung, aber nicht schreiben, dass die Fehlermeldung in eine Datei.

Die Fehlermeldung ist

malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "Can't connect to 209...") at json_load_test.pl line 39.

In alle drei versuche unter Zeile 39 bezieht sich auf:

decode_json($actual_response);

Ich bin einfach läuft das Skript auf der Kommandozeile als:

perl json_load_test.pl >> logs/output.txt 

ERWARTE ich DIE FEHLERMELDUNG GESCHRIEBEN WERDEN "output.txt"

Meine drei fehlgeschlagen versuche sind wie folgt.

Versuch 1:

my $ua = LWP::UserAgent->new;
$ua->timeout(3);    
$ua->env_proxy;        
my $response = $ua->get("http://$j_env/jobs/all.json?status=active");
my $actual_response=$response->decoded_content;
decode_json($actual_response);
if ($? == -1)
{print "\n Failed to execute: $!\n"; }

Versuch 2:

my $ua = LWP::UserAgent->new;
$ua->timeout(3);    
$ua->env_proxy;        
my $response = $ua->get("http://$j_env/jobs/all.json?status=active");
my $actual_response=$response->decoded_content;
my $perl_scalar= decode_json($actual_response);
if ($perl_scalar)
{ok(1,"For process $u2 inside counter $counter ");}
else
{ok(0,"FAILED!!! process $u2 inside counter $counter");}

Versuch 3:

my $ua = LWP::UserAgent->new;
$ua->timeout(3);    
$ua->env_proxy;        
my $response = $ua->get("http://$j_env/jobs/all.json?status=active");
my $actual_response=$response->decoded_content;
decode_json($actual_response) or die "FAILED!!!!";
InformationsquelleAutor Amey | 2011-10-18
Schreibe einen Kommentar