my %averages; open DATA, "query.txt" or die "$!"; $/ = "\n"; while () { #split on consecutive sequences of spaces/tabs #i dont like naked splits.. personally... my ($key, $value) = split(" ",$_); $averages{$key}->[0]+= $value; $averages{$key}->[1]++; } map { $averages{$_}=$averages{$_}->[0]/$averages{$key}->[1]; $averages{$_}|=999; print "$key => $averages{$_}\n"; } keys %averages;