#!/bin/perl -w while (defined($file = shift (@ARGV))) { $file=~/(\/\d+\.\w+)\.ref/; print "Results for $1\n"; open (FILE,"<$file"); $header=1; undef %branch_encountered; undef %branch_taken; while (defined($line=)) { if ($line=~/Branch taken/) {$header=0;} if ($header==1) {print $line;} else { # read branch data # print $line; if ($line=~/\s+[Y|N|X]\s+(\d+)\s+(\d+)\s+(\d+)\s+(br\S+)/) { $trip=$1; $taken=$2; $untaken=$3; $branch=$4; # print $trip,$taken,$untaken,$branch; $branch=~/\((\w*)\)/; $condition=$1; if ($branch=~/\,a/) {$annulled="a";} else {$annulled="n";} $pt="no"; if ($branch=~/\,pt/) {$pt="pt";} if ($branch=~/\,pn/) {$pt="pn";} # print $condition,$annulled,$pt; $branch_encountered{$condition}{$annulled}{$pt}+=$trip; $branch_taken{$condition}{$annulled}{$pt}+=$taken; $annulled_text{$annulled}=1; $pt_text{$pt}=1; # print "$line $branch $condition $annulled $pt\n"; } } } print "Condition "; foreach $annulled (sort keys %annulled_text) { foreach $pt (sort keys %pt_text) { print "$annulled-$pt "; } } print "\n"; foreach $condition (sort keys %branch_encountered) { print $condition. " "; foreach $annulled (sort keys %annulled_text) { foreach $pt (sort keys %pt_text) { if (defined($branch_taken{$condition}{$annulled}{$pt}) ) { print $branch_taken{$condition}{$annulled}{$pt}.'/'; } else {print '0/';} if (defined($branch_encountered{$condition}{$annulled}{$pt}) ) { print $branch_encountered{$condition}{$annulled}{$pt}.' '; } else {print '0 ';} } } print "\n"; } close FILE; }