#!/usr/bin/perl use strict; use warnings; use JSON; sub dump_array { my ($label_in, $ary_ref) = @_; my @ary = @$ary_ref; for ( my $i = 0; $i <= $#{ $ary_ref }; $i++ ) { my $label = "$label_in\[$i\]"; dump_item($label, $ary[$i]); } } sub dump_hash { my ($label_in, $obj_ref) = @_; my %obj = %$obj_ref; foreach my $k (sort keys %obj) { my $label = (length($label_in) > 0) ? "$label_in.$k" : "$k"; my $value = $obj{$k}; dump_item($label, $value); } } sub dump_item { my ($label_in, $value) = @_; if (ref($value) eq 'ARRAY') { print "$label_in array\n"; dump_array($label_in, $value); } elsif (ref($value) eq 'HASH') { print "$label_in hash\n"; dump_hash($label_in, $value); } elsif (ref $value) { my $bool = $value ? 1 : 0; print "$label_in $bool\n"; } elsif (defined $value) { print "$label_in $value\n"; } else { print "$label_in null\n"; } } my $row = 0; while (<>) { my $data = decode_json( $_ ); my $label = "row[$row]"; dump_hash($label, $data); $row++; }