あー!ってなるけど、
まずは落ち着いて以下のことをチェックする。
■ perlパス
#!/usr/bin/perl
↑になってるか(各自の環境に合わせて)確認。
ありがちなのはタイプミス。
スラッシュが抜けてて、
#!usr/bin/perl
とかになってると残念なことに動かない。
一行目はContent-Typeから始める。
print "Content-Type:text/html\n\n";
としてhttpヘッダーを必ずいれる。
■ ディレクティブの確認
apacheの場合はhttpd.confを確認。
ubuntuだと、
/etc/apache2/sites-available/default
が設定ファイルのパス。
そこに以下のディレクティブが書いてあるか確認。
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
この場合だと
http://localhost/cgi-bin/test.cgi
を開くことで、
/usr/lib/cgi-bin/
の中のtest.cgiが呼ばれる。
あとは、以下のディレクティブも見る。
AddHandler cgi-script .cgi .pl Options ExecCGI
まとめるとこんな感じ。
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/Options ExecCGI AddHandler cgi-script .cgi .pl
■ パーミッション
cgiファイルのパーミッション。
755になってるかどうか。
参考サイト
Apache Tutorial: CGI による動的コンテンツ
apache の「Premature end of script headers」
サーバ設定と .htaccess
CGIエラー特定の方法