#!/usr/bin/perl
# baseStat.PL -- gives basic statistics of multicolumn data
# Ben Smith -- S/V Mother of Perl, 2006
#
###########################################################
use strict;
use warnings;
my(@fields,@maxs,@maxR,@mins,@minR,@accums,$count)=0;
while(<>) {
chomp;
my @fields = split;
next if not scalar @fields;
++ $count;
for(my $n=0; $n< scalar @fields; ++ $n) {
if((not defined $maxs[$n]) || ($fields[$n] > $maxs[$n])) {
$maxs[$n] = $fields[$n];
$maxR[$n] = $count;
}
if((not defined $mins[$n]) || ($fields[$n] < $mins[$n])) {
$mins[$n] = $fields[$n];
$minR[$n] = $count;
}
$accums[$n] = $fields[$n] unless defined $accums[$n];
$accums[$n] += $fields[$n];
}
}
write;
exit;
#####################################################################
format STDOUT =
Samples: @###########
$count
X Y Z T
Min: @############.##### @############.#### @#############.#### @###############.###
$mins[0],$mins[1],$mins[2],$mins[3]
Min Record:@####### @####### @####### @#######
$minR[0],$minR[1],$minR[2],$minR[3]
Max: @############.##### @############.#### @#############.#### @###############.###
$maxs[0],$maxs[1],$maxs[2],$maxs[3]
Max Record:@####### @####### @####### @#######
$maxR[0],$maxR[1],$maxR[2],$maxR[3]
Avg: @############.##### @############.#### @#############.#### @###############.###
$accums[0]/$count, $accums[1]/$count, $accums[2]/$count, $accums[3]/$count
.