in reply to CGI layout

As others said, if most of your pages will have dynamic content, look into frameworks. To answer your first questions, it varies. Some people have a single CGI that runs everything, calling functions in other files depending on the pathinfo (the way PHP apps like Wordpress or Drupal run everything through index.php). Others use multiple CGIs, each for a different function. Others use SSI, which allows you to embed Perl scripts (or other executables) in HTML, but in a pretty inflexible way, so that's not common. But look at frameworks.

As for your last requirement: if you want a portion of a page updated regularly without refreshing the whole page, you'll want to look at client-side solutions like Ajax. You can push updates from the server side with Apache's nph-script method, but I've always thought that's pretty ugly. You can also send HTTP headers or meta tags that will cause automatic refreshes, but then you're refreshing the whole page, which you said you don't want. (Those might work within an iframe to do part of a page; I'm not sure about that.) But sites that do dynamic updates to individual divs on the fly use Ajax or something similar, to fetch new content and change just what elements need to be changed. I think all the common frameworks come with a fair amount of support for Ajax built in, too.