#!/usr/bin/perl -w
use strict;
my %grades;
while (<DATA>) {
chomp;
my($student,$grade) = split (" ",$_);
$grades{$student} .= $grade . " ";
#$grades{$student} = $grade;
print "\$grades{$student} is $grades{$student}\n";
}
for (sort keys %grades) {
my $scores = 0;
my $total = 0;
my @grades = split(" ", $grades{$_});
for (@grades) {
$total += $_;
$scores++;
}
my $average = $total / $scores;
print "$_: $grades{$_}\tAverage: $average\n";
}
__END__
lee 90
lee 100
kim 90
kim 90
./././perl.score
$grades{lee} is 90
$grades{lee} is 90 100
$grades{kim} is 90
$grades{kim} is 90 90
kim: 90 90 Average: 90
lee: 90 100 Average: 95
so
$grades{$student} .= $grade . " "; is more like
$grades
I also tried this for just education.(which btw is not the same solution and answer).
#!/usr/bin/perl -w
use strict;
use diagnostics;
my %grades;
my %student_n;
while (<DATA>) {
chomp;
my($student,$grade) = split (" ",$_);
$grades{$student} += $grade;
$student_n{$student}++;
}
for (sort keys %grades) {
my $avg = $grades{$_} / $student_n{$_};
print "$_ average of $student_n{$_} exams are $avg\n";
}
__END__
lee 90
lee 100
kim 90
kim 90
~
./././././perl.score_copy
kim average of 2 exams are 90
lee average of 2 exams are 95
|