Our second version of the site was also fully dynamic, but each page was vended by a CGI script written in Perl.  Using CGI directly, the script was loaded from scratch for every page.

The reloading of the script with each page wasn't very efficient.  This is the main criticism of basic Perl CGI (and most CGI for that matter).  For simple scripts it isn't such a problem, but more complex scripts can take a while to load.  In addition, script startup may include time-consuming tasks like opening a database.  This just adds to the per-page cost.

The main technical challenge was rewriting all of the links on the way to the user's browser.  Since a single script was processing all of the pages it was necessary to convert all links to points within the site to convoluted URLs invoking the script.  This wouldn't have been necessary has we been running on Apache, where we would have had access to mod_rewrite, but we were still being hosted by Windows NT/IIS at this time.

This version ran from sometime in 1999 until the summer of 2001.