こうかくと、「なんだperlのことか」と思う人が多数派になってきているようです。
CGIとはperlのことではありません。
perlで書いたCGIのみをCGIと呼ぶのでもありません。
WebサーバからCGI経由でperlスクリプトが呼び出されるだけのことです。
CGIというのはウェブサーバと動的にページやリソースを生成するための取り決めに過ぎないので。
mod_phpやmod_perlはパフォーマンス向上のためのただのフェイクのような気がします。
わたしのような偽技術者がわざわざ書かなくてもそんなことは当たり前すぎて誰も書かないのだと思っていたので、perlとPHPのパフォーマンスの比較について以下のようなページを見つけました。
PerlよりPHPの方が軽くて速いは本当?
http://homepage3.nifty.com/hippo2000/perltips/phpperl.htm
・・・「CGIとPerlはきちんと区別してね」とか・・・
servletはさらに細工があって、例えばTomcatなら、Apacheのモジュールがクライアントからのリクエストに対して、servletコンテナであるところのTomcatへ処理を委譲しているだけのことです。
これはperlスクリプトでなんらかのデーモンに処理を委譲してその結果からページを生成しているのとなんら変わりありません。その際、そのperlスクリプトはCGIではなくなるんでしょうかね。
書くまでもないことですが、rubyやpythonだって同じです。shだってページの生成くらい出来るでしょ。
CGIと呼べないものはどういうものかというと、RFC3875に書いてあるメタ変数を渡さない仕組みでページを生成するようなシステムのことでしょう。
RFC3875:The Common Gateway Interface (CGI) Version 1.1
http://tools.ietf.org/html/rfc3875
7. System Specifications
のあたりに、このメタ変数を環境変数として実装すると書いてあります。CGIというのが素朴に作られていることがよくわかると思います。