あなたはこのように一緒にCGI.pmとFCGI.pmを使用することはできません。その間にいくつかのグルーコードが必要です。CGIは環境から情報を読み込む必要があり、呼び出す方法ではできません。
Perlには、これに対応するモジュールCGI::Fastが含まれています。 CGIとFCGIの代わりにCGI::Fastを使用してコードを少し変更してください。
use strict;
use warnings;
use CGI::Fast;
my $count;
while (my $q = CGI::Fast->new) {
# $q is a fresh CGI object for the current request
print("Content-type: text/html\r\n\r\n", ++$count);
print "name = " . $q->param("name") ;
print "\n";
}
CGIスクリプトを既にお持ちの場合は、そのスクリプトを関数に入れて、そのループ内で呼び出すことができます。
CGI :: Fastの仕組みに興味がある場合は、take a look at its source code on CPANまでお気軽にお問い合わせください。主なことは、環境とファイルハンドル(STDOUTとSTDERR)は新しい要求ごとにマッピングする必要がありますが、実装では常に最初のものを解析する必要があります。
私がリンクしているperldocとCPANの両方の例は、古くて現代的なPerlコードではないことに注意してください。
今日それが現在のPerlのリリースから削除されたとして、あなたは、任意のよりprobably not use CGIでしょう。代わりに、実装方法についてはthe PSGI interface specificationとPlackをご覧ください。良いことは、さまざまなデプロイメントテクノロジ(CGIやFast CGIなど)にわたって明確なインターフェイスを提供することです。プログラムをApacheやnginxを使った単純なCGI、またはApacheやその他のWebサーバーを使った永続的なFCGIプロセスとして、あるいはPerlで書かれた特定の目的に合わせて作られたさまざまなPlack Webサーバーを通じてスタンドアロンアプリケーションとして実行できます。
再「* CGIは、環境からのものを読むために必要があるため*」、はい、しかし、FCGIが設定した環境適切な。それは問題ではありません。 – ikegami