A simple solution to monthly databases that's working fine for me at Nuestro Calendario Step 1 Start by finding this part of the code by Selena near the top: # Now rename some other variables with the same idea... if ($form_data{'year'} ne "") { $current_year = "$form_data{'year'}"; } else { $current_year = "$the_current_year"; } Step 2 Then add these two Chuck Mayo modifications (originally for another routine) to this next part of Selena's code: if ($form_data{'month'} eq "") { @mymonth = &make_month_array(&today); $current_month_name = &monthname($currentmonth); $cal_month = $currentmonth; # <---Chuck Mayo modification } else { @mymonth = &make_month_array(&jday($form_data{'month'},1,$current_year)); $current_month_name = &monthname($form_data{'month'}); $cal_month = $form_data{'month'}; # <---Chuck Mayo modification } Now we can use $cal_month to separate the events databases by months. $cal_month corresponds to the number of each month 1, 2, 3 and so on. Step 3 Create individual events files with this format: calendar.events.1 calendar.events.2 calendar.events.3 ...and so on for the twelve months with the same permissions and location as the original calendar.events file. note: I took my old calendar.events file, sorted it in a spreadsheet and then divided the events into the 12 files. Step 4 Now find all occurences of $database_file or "$database_file" and rename them all: "$database_file.$cal_month" note:In Selenas code (Version: 4.0) some of these ocurrences have quotes and others do not. Make sure they ALL have the quotes. That's all! ----------------------- From : Daniel McFall On the Cool Hacks page, there is a code modification to divide the calendar.events file into twelve separate files depending on the number of the month. It says to replace every instance of $database_file or "$database_file" with "$database_file.$cal_month". This is not correct. There are several instances when $database_file is used in an error message. These instances should simply be replaced by $database_file.$cal_month to prevent closing the double quotes of the error message too early.