I did this and it works.
Of course I have seperate php files for each view, the internal links within the script's template files are hacked to call upon the php scripts instead of the cgi script directly, and with some imagination you can also use .htaccess to make some of the variables more SEO-friendly.
This executes the cgi script and displays it from within your php script:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.[your-site-url].com/cgi-bin/calendar/calendar.pl?template=".$_GET['template']."&view=".$_GET['view']."&calendar=".$_GET['calendar']."&event_id=".$_GET['event_id']);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
Your php script can actually pass variables to the cgi script this way, I just gave them the same names in the above example to make it simpler. So after setting this up you could visit your file:
URL/directory/some/where/file.php?View=monthly&calendar=default&month=1&year=2007
The number of variables and what they are called are passed individually and specified within the php script, so it does become less flexible (if anyone has a better way be my guest) unless you simply write more than one php script, or write your php script with its own variables that choose between a selection of curl-setopt("URL")'s at runtime.
In my own calendar, I *only* use the monthly view and I have a heavily modified event view. So I also set up .htaccess rules:
RewriteRule ^/(.*)/(.*)/ cgi-bin/calendar/calendar.pl?year=$2&month=$3 [L]
Thus people go to my site's [URL]/1/2007/ to view month 1, year 2007 and the URL is squeaky clean. The links on the calendar grid are modified to [URL]/event-101 using the same methodology:
RewriteRule ^event-(.*) /cgi-bin/calendar/calendar.pl&View=event&event_id=$1 [L]
Good luck!