#!/usr/bin/perl -w use strict; use v5.10; use List::Util qw(min max sum); my @procBrdNum; my $numProcBrds; my $dataSetCnt; my @minArray = (); my @maxArray = (); my @avgArray = (); my @completeDataPts = (); my $numDataSets; my @dataSetSizes; my (@totalMin, @totalMax, @totalAvg, @totalThroughputArray); open my $ChassisConfigFile, ") { push(@procBrdNum,$slotLine); } close $ChassisConfigFile; $numProcBrds = @procBrdNum; printf("numProcBrds: $numProcBrds \n"); #Find and store the local minimimum & maximum throughput per board & then the lowest min and max per board for(my $brdCnt = 0 ; $brdCnt < $numProcBrds; $brdCnt++) { my $T = $procBrdNum[$brdCnt] ; $T =~ s/\R//g; #Remove line break - not sure why there is a line break? my $TestFileName = "Slot". $T ."Simplex.cfg.data"; printf("Board $procBrdNum[$brdCnt] File Name: $TestFileName \n"); open my $dataFile, "<$TestFileName" or die ("Unable to open file \n"); $dataSetCnt = 0; while (my $dataLine = <$dataFile>) { $dataLine =~ /^#/ and next; my @dataPts = split(/\s+/, $dataLine); my $dataSetSize = shift(@dataPts); if($brdCnt == 0) { push(@dataSetSizes, $dataSetSize); } my $totalThroughput = shift(@dataPts); my $min = min(@dataPts); my $max = max(@dataPts); my $avg = scalar @dataPts ? (sum(@dataPts) / (scalar @dataPts)) : 0; push @{ $totalThroughputArray[$dataSetCnt]}, $totalThroughput; push @{ $minArray[$dataSetCnt]}, $min; push @{ $maxArray[$dataSetCnt]}, $max; push @{ $avgArray[$dataSetCnt]}, $avg; #BAD CODE HERE! #@{ $completeDataPts[$dataSetCnt]} = (@{ $completeDataPts[$dataSetCnt]}, @dataPts); #push @{ $completeDataPts[$dataSetCnt]}, @dataPts; my $completeDataPtRef = \@{ $completeDataPts[$dataSetCnt]}; push @{ $completeDataPtRef}, @dataPts; $dataSetCnt++; } } $numDataSets = @dataSetSizes; #MORE BAD CODE HERE! #for(my $dataSetCnt = 0; $dataSetCnt < $numDataSets; $dataSetCnt++) my $completeDataPtRef = \@{ $completeDataPts[$dataSetCnt]}; my $numCmpDataPts = @$completeDataPtRef; print "CmpDataPts $numCmpDataPts \n"; print "@$completeDataPtRef \n"; #{ # print " @{ $completeDataPts[$dataSetCnt]} \n"; # my @oneLineDataPts = (); # push @oneLineDataPts,[@{ $completeDataPts[$dataSetCnt]}]; #my $numCmpDataPts = @{ $completeDataPts[$dataSetCnt]}; #printf("Num of data Sets $numCmpDataPts \n"); #my @oneLineDataPts = { $completeDataPts[$dataSetCnt]}; #my $numOneLinePts = @oneLineDataPts; #printf("Num of data Pts $numOneLinePts \n"); # for(my $ptCnt = 0 ; $ptCnt < $numOneLinePts; $ptCnt++) # { # printf("DataValuesData Set Ct: $dataSetCnt, dataPt[ $ptCnt ] = $oneLineDataPts[$ptCnt] \n"); # } #}