#!/usr/bin/perl
use File::Path qw(make_path);
$input_file = $ARGV[0];
$out_folder = $ARGV[1];
open(INPUT, "<", $input_file) || die "Could not open $input_file";
my $outFH;
my $currentName="";
my $last=3;
my $id=0;
my $tmpDAT="scale.dat.tmp";
my $dat="scale.dat";
#print "$out_folder\n";
open(my $allFH, '>', $tmpDAT) or die "Can't write to file: $!";
print $allFH "Name\t3\t4\t5\t6\t7\t8\t9\t10\t11\t12\t13\t14\t15";
unless (-d $out_folder) {
mkdir $out_folder;
}
while ($line=) {
my($name,$size,$time);
chomp($line);
next unless ($line =~/^>>>>>>>>\s/);
#print $line . "\n";
($name) = ($line =~/^>>>>>>>>\s(.*)\s<<<<<<<<$/);
die "no name" unless defined($name);
$name =~ tr/ //ds;
if($currentName ne $name){
$currentName=$name;
if(defined($outFH)){
close $outFH;
}
open($outFH, '>', "$out_folder/$name.dat") or die "Can't write to file: $!";
$id++;
if(($id != 1) and ($last <= 15)){
for(my $j = $last; $j <= 15; $j++){
print $allFH "\t-";
}
}
#print "name = $name\n";
print $allFH "\n$name";
$last=3;
}
while ($line=) {
chomp($line);
if ($line =~ /time\s\(s\).*:/) {
#print $line . "\n";
($time)=($line =~ /time.*:\s*(\S+)\s*$/);
last;
}
}
while ($line=) {
chomp($line);
if ($line =~ /max\sprocess\scount/) {
#print $line . "\n";
($size)=($line =~ /max\sprocess\scount.*:\s*(\d+)\s*$/);
last;
}
}
die "no size" unless defined($size);
die "no time" unless defined($time);
# $time=round($time); don't round the time
$time=1 if $time==0;
next unless ($size >= $last);
if($size>$last){
#print "size=$size but last=$last\n";
for (my $i=$last; $i < $size; $i++) {
print $allFH "\t-";
}
}
print $allFH "\t$time";
print $outFH "$size\t$time\n";
$last=$size+1;
# for debugging:
#print "size = $size\t";
#print "time = $time\n";
#print " $type & $name$cite & $result & $loc & $states & $steps & $time & $mem & $valid & $prove & $scale \\\\","\n";
}
if(($id != 1) and ($last <= 15)){
for(my $j = $last; $j <= 15; $j++){
print $allFH "\t-";
}
}
close $allFH;
open(my $newFH, '>', $dat) or die "Can't write to file: $!";
open(DATA, '<', $tmpDAT) or die "Can't open file: $!";
my $count=0;
my @lines;
my $width;
while ($line=) {
chomp($line);
@new=split(/\t/, $line);
$width=@new;
push @lines, [ @new ]; # split = split( ' ', $_ )
$count++;
}
for(my $k=0; $k<$width;$k++){
foreach my $row (@lines) {
print $newFH $row->[$k] . "\t";
}
print $newFH "\n";
}
close $newFH;
close DATA;
unlink $tmpDAT;