my %data; while () { next if /^ID/ || /^\s$/; my ($id, $value) = split /,/; $data{$id}[0] += $value; $data{$id}[1] ++; } my %avg; while (my ($id, $info) = each %data) { $avg{$id} = $$info[0] / $$info [1]; }