#!/usr/bin/perl
use 5.010;
use strict;
use JSON;
use Scalar::Util 'looks_like_number';
my $json = JSON->new->allow_nonref;
our $VERSION = '0.65'; # VERSION
{
local $/;
my $input = $json->decode(scalar <>);
if (ref($input) eq 'ARRAY' && @$input > 0 && @$input <= 3 &&
looks_like_number($input->[0]) && !ref($input->[1])) {
$input = $input->[2];
}
print $json->encode($input);
}
#ABSTRACT: Strip result envelope (JSON version)
#PODNAME: strip-result-env-json
__END__
=pod
=head1 NAME
strip-result-env-json - Strip result envelope (JSON version)
=head1 VERSION
version 0.65
=head1 SYNOPSIS
% cmdline-script ... --format=json | strip-result-env-json
=head1 DESCRIPTION
This is a simple utility to strip result envelope (that is, the status and
message). It will change:
[200,"OK",{"foo":"bar"}]
[405,"Not found"]
[200,"OK","result",{"result_metadata1":"val"}]
to:
{"foo":"bar"}
null
"result"
It accepts and outputs JSON. It passes data unchanged if input data is not
enveloped result. It dies on error.
=head1 SEE ALSO
L<Perinci::CmdLine>
=head1 AUTHOR
Steven Haryanto <stevenharyanto@gmail.com>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Steven Haryanto.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut