GradeSchool.pm (524B) - raw
1 package GradeSchool; 2 use strict; 3 use warnings; 4 use Exporter qw<import>; 5 our @EXPORT_OK = qw<roster>; 6 7 sub roster { 8 my ( $students, $grade ) = @_; 9 my @roster; 10 my %student_by_grade; 11 foreach my $student (@{ $students }) { 12 push @{ $student_by_grade{$student->[1]} } => $student->[0]; 13 } 14 foreach my $student_grade (sort keys %student_by_grade) { 15 if (not defined $grade or $student_grade == $grade) { 16 push @roster => sort @{ $student_by_grade{$student_grade} }; 17 } 18 } 19 return \@roster; 20 } 21 22 1;