#!/usr/bin/perl -w use strict; use Statistics::Basic::Mean; use Statistics::Basic::StdDev; my $filename='224_APID003_report.csv'; my (%HoA,%hash_keys); open (READ_IN,"<$filename") or die "I can't open $filename to read.\n"; while () { chomp; create_hash($_) if /^Year/; pop_hash($_) if /^\d{4},/; } close(READ_IN); foreach (sort{$a<=>$b}keys(%hash_keys)) { next if $hash_keys{$_}=~m/(?:TIME|YEAR)/i; my $count=@{$HoA{$hash_keys{$_}}}; my $pointer=\@{$HoA{$hash_keys{$_}}}; my @hi_low=sort{$a<=>$b}@{$HoA{$hash_keys{$_}}}; my $low=shift(@hi_low); my $hi=pop(@hi_low); my $mean = Statistics::Basic::Mean->new($pointer)->query; my $stddev = Statistics::Basic::StdDev->new($pointer)->query; print "$hash_keys{$_}: MIN:($low) MEAN:($mean) MAX:($hi) STDEV:($stddev) POINTS:($count)\n"; } ################################ #Subroutines ################################ sub create_hash { my @columns=split(/,/,shift); my $i=0; foreach (@columns) { $i++; $hash_keys{$i}=$_; $HoA{$_}=(); } } sub pop_hash { my @values=split(/,/,shift); foreach (sort{$a<=>$b}keys(%hash_keys)) { push(@{$HoA{$hash_keys{$_}}},shift(@values)); } }