#! perl -slw use strict; # do open and lock stuff my @students = map{ [ split ] } ; print "Student scores\n------------"; print "@$_" for @students; my %grades; for my $grade ( 0 .. 2 ) { $grades{ $grade } = $students[ 0 ][ $grade ] * 0.2 + $students[ 1 ][ $grade ] * 0.25 + $students[ 2 ][ $grade ] * 0.25 + $students[ 3 ][ $grade ] * 0.3 } print "\nGrades\n--------"; print "$_ => $grades{ $_ }" for sort keys %grades; =Output P:\test>337154 Student scores ------------ 1 2 3 2 1 3 3 1 2 3 2 1 Grades -------- 0 => 2.35 1 => 1.5 2 => 2.15 =cut __DATA__ 1 2 3 2 1 3 3 1 2 3 2 1