Comment puis-je attraper un “échec de décodage JSON” message d'erreur en Perl?

Donc je suis en train de charge test une API REST qui retourne une valeur JSON.

À faire, et que je suis la création de plusieurs instances du script perl.

Le script Perl fondamentalement exige que les URL, et tente de decode_json. Évidemment, lorsqu'on charge est générée, elle échoue.

Maintenant le problème que j'ai le visage est - Une erreur est affiché sur l'invite de commande, mais ne pas écrire ce message d'erreur dans un fichier.

Le message d'erreur est

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.

Dans tous les trois tentatives en dessous de la ligne 39 désigne:

decode_json($actual_response);

Je suis simplement en exécutant le script sur l'invite de commande comme:

perl json_load_test.pl >> logs/output.txt 

J'ATTENDS LE MESSAGE D'ERREUR ÉCRIT EN "output.txt"

Mes trois échoué tentatives sont comme suit.

Tentative 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"; }

Tentative 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");}

Tentative 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!!!!";

OriginalL'auteur Amey | 2011-10-18