#!/usr/bin/perl -lw use strict; use Statistics::Descriptive; my $filename='224_APID003_report.csv'; open (READ_IN,"<$filename") or die "I can't open $filename to read.\n"; my @idxs; my %vars; my @names; while () { chomp; /^Year/ && do { @names = split /,/; @idxs = grep {$names[$_] !~ /TIME|YEAR/i } (0..@names-1); $vars{$_} = Statistics::Descriptive::Sparse->new() for @names[@idxs]; }; /^\d{4}/ && do { my @values = split /,/; $vars{$names[$_]}->add_data($values[$_]) for @idxs; }; } close READ_IN or die $!; foreach (keys %vars) { printf "%20s: mean = %10.4f, var = %10.4f\n",$_, $vars{$_}->mean(), $vars{$_}->variance(); }