зеркало из https://github.com/microsoft/git.git
56 строки
1.0 KiB
Perl
56 строки
1.0 KiB
Perl
#!/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++;
|
|
}
|
|
|