while ( $sth->fetchrow() ) { push @classes, { class => $class, department => $department, count => $count }; } #### @departments = ( { department => "v6" classes => [ { class => "Chemistry", department => "v6", count => 18 }, { class => "German I", department => "v6", count => 27 }, etc ... ] }, { department => "h4" classes => [ { class => "French II", department => "h4", count => 9 }, etc ... ] }, etc ... ); #### my %departments; push @{ $departments{ $_->{department} }{classes} }, $_ foreach (@classes); my @departments = map { $_->{department} = $_->{classes}[0]{department}; $_ } values %departments;