Here's my answer, building on the code you have already posted to create
%clone_hash.
# build the data
my %count;
while (my ($test,$result) = each %clone_hash) {
$count{$test}{passed}++ unless ($result =~ /pass4|fail/);
}
# check the data
foreach my $test (keys %count) {
if (! $count{$test}{passed}) {
print "test $test had no passing results" . $/;
} elsif ($count{$test}{passed} == 1) {
print "test $test had only one passing result" . $/;
}
}
I am ignoring the minor issues with your code that others have pointed out.
---
It's all fine and dandy until someone has to look at the code.