You've got the right idea -- use something like 1-7 for the days and 7-21 for the hours, then get Perl to generate field names of the form foo_(day)_(hour). This gives you unique checkbox names. Then when you get the form submitted, do a nested set of loops and see if each checkbox is selected or not. I'd probably pop that information straight into a database table.
Yeah, use a nested loop to output the checkboxes, and use the outter loop to handle the opening and closing tr, and the inner loop for the opening and closing td elements. Piece of cake.
Life is short: get busy!