use warnings; use strict; my %averages; open( my $SCORES, '<', 'c:/scripts/skaters.txt' ) or die "Can't open score file: $!\n"; while ( <$SCORES> ) { chomp; my ($name,@scores) = split ','; @scores = sort @scores; # Drop high & low scores pop @scores; shift @scores; my $total; $total += $_ for @scores; $averages{$name} = $total/scalar @scores; } close $SCORES; my @names_by_score = sort {$averages{$b} <=> $averages{$a}} keys %averages; for my $name ( @names_by_score[0..2] ) { print "$name: $averages{$name}\n"; }