- get $begin_day, $begin_month, $begin_year and $end_day, $end_month, $end_year from form input $begin_week = Week_of_Year($begin_year,$begin_month,$begin_day); ($begin_year,$begin_month,$begin_monday) = Monday_of_Week($begin_week,$begin_year); $end_week = Week_of_Year($end_year,$end_month,$end_day); ($end_year,$end_month,$end_monday) = Monday_of_Week($end_week,$end_year); #note that in above month and year get changed in case the range straddles months or years - calculate $number_of_weeks in range either using a Date::Calc function or $end_week - $begin week $monday_date = $begin_monday; for $w (1 .. $number_of_weeks) { print days-of-week row; print dates row starting at $monday_date for $r (1 .. $number_of_rooms) { get room data and print it; } $monday_date = $monday_date +7; }