open my $fh, '<', 'grades' or die "Can't open grades: $!\n"; while (my $line = <$fh>) { my ($student, $grade) = split ' ', $line; $grades{$student} .= $grade . ' '; } foreach my $student (sort keys %grades) { my ($scores, $total) = (0, 0); my @grades = split ' ', $grades{$student}; foreach my $grade (@grades) { $total += $grade; $scores++; } my $average = $total / $scores; print "$student: $grades{$student}\tAverage: $average\n"; }