#!/usr/bin/perl use strict; use warnings; use JSON::SL; my $p = JSON::SL->new; #look for everthing past the first level (i.e. everything in the array) $p->set_jsonpointer(["/^"]); local $/ = \5; #read only 5 bytes at a time while (my $buf = ) { $p->feed($buf); #parse what you can #fetch anything that completed the parse and matches the JSON Pointer while (my $obj = $p->fetch) { print "$obj->{Value}{sequenceNumber}: $obj->{Value}{senderCallsign}\n"; } } __DATA__ [ {"sequenceNumber":1401615035,"frequency":7076402,"mode":"JT65","sNR":-1,"flowStartSeconds":1492192912,"senderCallsign":"DJ0FX","senderLocator":"JN67KT","receiverCallsign":"OZ7IO","receiverLocator":"JO65gq","receiverDecoderSoftware":"WSJT-X v1.7.0 r7405"}, {"sequenceNumber":1401615039,"frequency":7077903,"mode":"JT65","sNR":-11,"flowStartSeconds":1492192973,"senderCallsign":"R7NO","senderLocator":"KN98","receiverCallsign":"OZ7IO","receiverLocator":"JO65gq","receiverDecoderSoftware":"WSJT-X v1.7.0 r7405"}, {"sequenceNumber":1401615040,"frequency":7076811,"mode":"JT65","sNR":-11,"flowStartSeconds":1492193032,"senderCallsign":"F6AVP","senderLocator":"JN28UX","receiverCallsign":"OZ7IO","receiverLocator":"JO65gq","receiverDecoderSoftware":"WSJT-X v1.7.0 r7405"} ]