... my %courses; for my $row (@results) { my $course_id = $row->[0]; $courses{ $course_id } ||= { ... desc => $row->[1], sittings => {}, ... }; $courses{ $course_id }->{ sittings }->{ $row->[2] } = $row->[3]; };