A good question, but, at least partly, the wrong question. CGI is a useful low-level suite of tools for emitting HTML. It will happily emit HTML to a file, to a screen, or to a web server. Apache will display the output from programs written with CGI, but you need a perl interpreter, either your normal one (/usr/bin/perl or whatever), or one built into Apache.
mod_perl is a very different animal, it is, specifically, a perl interpreter embedded into the Apache webserver. As such it doesn't do anything unless and until you feed it.
CGI is quite a good choice for feeding mod_perl, athough not the only one. It is also easy to learn, and once you understand how CGI works, learning other frameworks will be significantly easier. mod_perl can do stuff that CGI can't, but you won't get near that stuff to start with.
My own 2 cents - start with CGI and the perl interpreter on your system if you're using Linux. In Windows go with mod_perl from day 1, only because it's a bit easier to setup. If your Apache has mod_perl set up, use it. You normally only need mod_perl if your site gets very popular.
摘自perlmonks.org( http://www.perlmonks.org/?node_id=518869)的一段讨论:Re: cgi or mod_perlby astaines on Dec 24, 2005 at 10:12 UTCA good question, but, at least partly, the wrong question. CGI is a useful lo