I have a hash with the following values. It has multiple (2) values for each key.
my %output = ( "projectA" => [ "Compliant files excl rules: 456 - 76%
Noncompliant files excl rules 142 - 24% " ,
"Compliant files incl rules: 2910 - 84%
Noncompliant files incl rules: 572 - 16%" ],
"projectB" => [ "Compliant files excl rules: 345 - 72%
Noncompliant files excl rules 123 - 32% " ,
"Compliant files incl rules: 1234 - 98%
Noncompliant files incl rules: 232- 10%" ] );
So when I am printing it (Current Output), looks like below
Project Excluding rules Including rules
----------------------------------------------------------------------------------------
ProjectA Compliant file excl rules: 456 -76% Compliant files incl rules: 2910 - 84%
Noncompliant files excl rules: 142-24% Noncompliant files incl rules:572 - 16%
ProjectB Compliant files excl rules: 345 - 72% Compliant files incl rules: 1234 - 98%
Noncompliant files excl rules: 123 - 32% Noncompliant files incl rules: 232- 10%
*Desired Output * How can I print them without the words excl rules
and incl rules
. I dont want to repeat them for each project, as I am mentioning it already in the heading.
Project Excluding rules Including rules
----------------------------------------------------------------------------------------
ProjectA Compliant files: 456 -76% Compliant files: 2910 - 84%
Noncompliant files: 142-24% Noncompliant files:572 - 16%
ProjectB Compliant files: 345 - 72% Compliant files : 1234 - 98%
Noncompliant files:123 - 32% Noncompliant files: 232- 10%
The current code I am using to print them is :
my $key;
foreach $key (sort keys %output) {
$html .= "<tr><td>$key</td>";
$html .= "<td>$_</td>" for @{ $output{$key} };
$html .= " </tr>";
}
Change this line:
$html .= "<td>$_</td>" for @{ $output{$key} };
to
for (@{ $output{$key} }) {
s/ (ex|in)cl rules//g;
$html .= "<td>$_</td>";
}