json decoding in perl

Viewed 15591

i have a json in a file sample.txt

i want to decode whole json and print key values by specifying. my per code is

#!/usr/bin/perl
use JSON; 
use Data::Dumper; 
use JSON::XS qw( decode_json );

open (han1, "sample.txt") or die "can not read this file ";
@array1 = <han1>; 
$tst =  $array1[0];
$text = decode_json $tst; 
print Dumper($text);

I have a key in json name 'messages_ready' . i want to print value of 'messages_ready'..

my json is follows

[
    {
        "arguments": {},
        "auto_delete": false,
        "backing_queue_status": {
            "avg_ack_egress_rate": 55.02128728993393,
            "avg_ack_ingress_rate": 55.02128728993393,
            "avg_egress_rate": 55.02128728993393,
            "avg_ingress_rate": 109.64602476156203,
            "delta": [
                "delta",
                0,
                0,
                0
            ],
            "len": 6465,
            "next_seq_id": 7847104,
            "pending_acks": 4,
            "persistent_count": 0,
            "q1": 0,
            "q2": 0,
            "q3": 0,
            "q4": 6465,
            "ram_ack_count": 4,
            "ram_msg_count": 6465,
            "target_ram_count": "infinity"
        },
        "consumers": 4,
        "durable": true,
        "exclusive_consumer_tag": "",
        "memory": 19373224,
        "message_stats": {
            "ack": 7840491,
            "ack_details": {
                "rate": 60.4
            },
            "deliver": 7840497,
            "deliver_details": {
                "rate": 60.4
            },
            "deliver_get": 7840498,
            "deliver_get_details": {
                "rate": 60.4
            },
            "get": 1,
            "get_details": {
                "rate": 0.0
            },
            "publish": 7847260,
            "publish_details": {
                "rate": 105.4
            },
            "redeliver": 3,
            "redeliver_details": {
                "rate": 0.0
            }
        },
        "messages": 6469,
        "messages_details": {
            "rate": 74.6
        },
        "messages_ready": 6465,
        "messages_ready_details": {
            "rate": 74.6
        },
        "messages_unacknowledged": 4,
        "messages_unacknowledged_details": {
            "rate": 0.0
        },
        "name": "reports",
        "node": "rabbit@ip-10-0-0-105",
        "policy": "",
        "status": "running",
        "vhost": "/"
    },
    {
        "arguments": {},
        "auto_delete": false,
        "backing_queue_status": {
            "avg_ack_egress_rate": 0.0,
            "avg_ack_ingress_rate": 0.0,
            "avg_egress_rate": 0.0,
            "avg_ingress_rate": 0.0,
            "delta": [
                "delta",
                "undefined",
                0,
                "undefined"
            ],
            "len": 1,
            "next_seq_id": 1,
            "pending_acks": 0,
            "persistent_count": 0,
            "q1": 0,
            "q2": 0,
            "q3": 0,
            "q4": 1,
            "ram_ack_count": 0,
            "ram_msg_count": 1,
            "target_ram_count": "infinity"
        },
        "consumers": 0,
        "durable": true,
        "exclusive_consumer_tag": "",
        "idle_since": "2013-12-31 13:03:35",
        "memory": 13760,
        "message_stats": {
            "publish": 1,
            "publish_details": {
                "rate": 0.0
            }
        },
        "messages": 1,
        "messages_details": {
            "rate": 0.0
        },
        "messages_ready": 1,
        "messages_ready_details": {
            "rate": 0.0
        },
        "messages_unacknowledged": 0,
        "messages_unacknowledged_details": {
            "rate": 0.0
        },
        "name": "test",
        "node": "rabbit@ip-10-0-0-105",
        "policy": "",
        "status": "running",
        "vhost": "/"
    }
]

How would i do this ? help me here...please

2 Answers
Related