my ($s1,$n,$s2,$v2,undef) = split ';',$_,5;
####
{"ip":["2.3.4.5","2.3.4.5"],"id":"2","host":"www.cnn.com"}
{"ip":["3.4.5.6","1.2.4.5"],"id":"4","host":"www.google.com"}
{"ip":["1.2.3.4"],"id":"1","host":"www.example.com"}
{"ip":["3.4.5.6"],"id":"3","host":"www.google.com"}
{"ip":["2.3.4.5"],"id":"2","host":"www.example2.com"}
##
##
{"id":"1","Answer":[{"ip":"1.2.3.4"}],"host":"www.example.com"}
{"id":"2","Answer":[{"ip":"2.3.4.5"},{"ip":"2.3.4.5"}],"host":"www.cnn.com"}
{"id":"3","Answer":[{"ip":"3.4.5.6"}],"host":"www.google.com"}
{"id":"4","Answer":[{"ip":"3.4.5.6"},{"ip":"1.2.4.5"}],"host":"www.google.com"}
{"id":"2","Answer":[{"ip":"2.3.4.5"}],"host":"www.example2.com"}
##
##
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
open my $fh, '<', 'file2' or die $!;
my %query;
while (<$fh>) {
chomp;
my (undef, $cat, $id, undef, $val) = split /;/;
if ($cat eq 'Query') {
if (%query) {
output(\%query);
%query = ();
}
$query{$id} = [$val];
}
else {
push @{ $query{$id} }, {ip => $val};
}
}
output(\%query);
sub output {
my $query = shift;
my ($id) = keys %$query;
my $host = shift @{ $query->{$id} };
print encode_json({Answer => $query->{$id}, id => $id, host => $host}),"\n";
}