※ ChatGPTを利用し、要約された質問です(原文:CGI::Carpを使っているのにInternal Server Error)
CGI::Carpを使っているのにInternal Server Error
このQ&Aのポイント
CGI::Carpを使っているのにブラウザでInternal Server Errorが発生します。コマンドラインでは正常に動作します。
原因は、プログラムの実行順序とHTMLのサポートの欠如です。
CGI::Carpが機能していないため、エラーメッセージが表示されず、問題解決が難しい状況です。
CGI::Carpを使っているのにInternal Server Error
うまく動きません。コマンドラインでは作動するのですが、ブラウザではダメでした。
#! /usr/bin/perl -w
use Calendar::Simple;
use CGI::Carp qw(fatalsToBrowser);
use Data::Dumper;
use lib "/home/kojima/kojima00001/myperl/lib";
my @curr=calendar;
print Dumper(@curr);
もっともその理由は分かりました。
use lib "/home/kojima/kojima00001/myperl/lib";
が
use Calendar::Simple;
より後にあったことです。
さらに言うと、ブラウザで動かすためにはHTMLをサポートしていないといけませんが、このコードはHTMLをサポートしていません。
この2点を修正して、無事このプログラムはブラウザでもうまく動いたのですが、問題はうまく動いてくれていなかった時のブラウザの表示です。
Internal Sever Errorが出ていました。それじゃ何のことか分からなくて嫌だから
use CGI::Carp qw(fatalsToBrowser);
と宣言してあるのです。
モノの本によると、この場合は
Software error:
Can't locate Calendar/Simple.pm in @INC (@INC containts: @INCに含まれるディレクトリがズラズラ・・・).
BEGIN failed--compilation aborted at calendar.cgi line3.
というエラーメッセージが表示されるはず。
つまりCGI::Carpが機能していないことになります。
何故でしょう?
お手数をお掛けします。
お礼
凄い! これも順番だったんですね。 ありがとうございます!