##
open(my $fh, '<', "$file_path") or return 0;
while (my $line = <$fh>) {
# ...........
# ...........
# Additional operations of the lines of the file
# ...........
# ...........
my %a; # temp hash
$a{"group"} = $group;
if (defined($href->{"values"})) {
$a{"values"} = [sort(uniq($value,@{$href->{"values"}}))];
} else {
push(@{$a{"values"}},$value);
}
push(@{$href->{"test"}},\%a);
}
####
{
"root": [
{
"test": [
{
"group": "XYZ",
"values": [
"1234"
]
},
{
"group": "ABC",
"values": [
"6.13.00"
]
}
]
},
{
"test": [
{
"group": "XYZ",
"values": [
"tcsh"
]
},
{
"tool": "WEA",
"values": [
"6.13.00"
]
}
]
},
{
"test": [
{
"group": "BAB",
"values": [
"ASDAS",
"12312321"
]
},
{
"group": "SADA",
"values": [
"6.13.00",
"1231231"
]
}
]
}
]
}
####
sub parse_file {
my ($file_path,$href) = @_;
open(my $fh, '<', "$file_path") or return 0;
while (my $line = <$fh>) {
chomp($line);
unless ($line =~ /\A[^,]+(?:,[^,]+){5}\z/) {
next;
}
my ($key,$group,$value,$version,$file,$count) = split(/,/,$line);
push @{ $href->{test} }, {
group => $group,
values => [ sort uniq $value, @{ $href->{values} // [] } ]
};
}
close ($fh);
return 1;
}
foreach my $dir (sort(@list_of_dirs)) {
my ($all,%data);
$all = $dir."/"."galish";
prase_results_raw($all,\%data);
push(@all_data,\%data);
}
####
{
"root": [
{
"test": [
{
"group": "XYZ",
"values": [
"1234"
]
},
{
"group": "ABC",
"values": [
"6.13.00"
]
}
]
},
{
"test": [
{
"group": "XYZ",
"values": [
"tcsh"
]
},
{
"tool": "WEA",
"values": [
"6.13.00"
]
}
]
},
{
"test": [
{
"group": "BAB",
"values": [
"ASDAS",
]
},
{
"group": "BAB",
"values": [
"12312321"
]
},
{
"group": "SADA",
"values": [
"6.13.00",
]
}
{
"group": "SADA",
"values": [
"1231231"
]
}
]
}
]
}