500エラーは何が原因なんだか検討もつかず途方に暮れるものです。
ググればいろいろなサイトで対処法が載っていますが、 後輩が困ってたので自分用も兼ねつつのまとめです。
他の手段も覚えたら随時更新します。
Syntax Check
基本の基本ですが、ファイルに構文エラーがないか確認しておきます。
# perl -c filename.cgi
おまじないハイフン
ソースコードの冒頭を確認します。
#!/usr/bin/perl -
...code...
サーバによってはperlのパスが違うこともあるので以下も試します。
#!/usr/bin/local/perl -
...code...
ハイフンふたつとかも試してみる。
#!/usr/bin/perl --
...code...
ファイルの文字コードを確認
Perlでは、Sjift_JISでは特定のマルチバイトがきたとき、うまく動きません。
古いPerl環境の場合は、ソースに漢字・日本語が混じるときはいったんEUC-JP
にしてみると幸せになれそうです。
テキストエディタで保存する際、文字コードをEUCにして保存するとよいです。
改行コードの変更
Windows端末でCGIファイルを作成していたり、上書き保存していたりしたら要確認。 CRLFである場合はCR消しましょう。LF残しで。 消すツールはなんでもいいですが、nkfコマンドがラク。
# nkf -Lu filename.cgi
エラーメッセージを見よう
そこまでやったら、サーバのエラーログを確認します。