• ベストアンサー

Perlのデバッグ方法って。。。ないでしょうか??_no

こんにちは。よろしくお願いします。 Perl担当者の方が休まれているため、急遽、Perlシステムの修正作業を行うことになったPerl初心者の者です。 普段はASPを使っているので、デバッグ時に「response.write」など、処理内容をブラウザ上に表示させてしまう~などのことが可能なのですが。。。 Perlの場合、何か方法は無いでしょうか?? 多分、この変数とこの入力値の比較の時に不正があるんだろ??のような部分は発見したのですが。。。その値~の表示ができないので、確証が持てない&修正が容易ではないです。 Perlのデバッグは。。。どのように行っているのでしょうか。。。? ご存知の方いましたら、ご教授願えませんでしょうか。よろしくお願いします。 (エラーについての質問は別で立てさせていただきたいと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> 多分そのように思います。(「.cgi」や>「.pl」拡張子は、CGIスクリプト。という> 覚え方であっていればですが。 .plはシェルのコマンドラインで起動するファイルにも 使いますのでなんともいえませんが、 .cgiという拡張子ならまあCGI用でしょうね。 日本語のドキュメントがあるかどうかわかりませんが、 CGI::Carpには、メッセージの出力先を切り替える メソッドがあります。 ちょっと引用すると The carpout() function requires one argument, which should be a reference to an open filehandle for writing errors. It should be called in a "BEGIN" block at the top of the CGI application so that compiler errors will be caught. Example: BEGIN { use CGI::Carp qw(carpout); open(LOG, ">>/usr/local/cgi-logs/mycgi-log") or die("Unable to open mycgi-log: $!\n"); carpout(LOG); } とすると、 Perlからのログ出力が /usr/local/cgi-logs/mycgi-log になります。 ここを適当なディレクトリと名前にしてやってみてはどうでしょう。 詳しい説明はPerlがインストールされている環境で perldoc CGI::Carp とすればでてきます。 ちょっと余計なことかもしれませんが、別の質問において提示されている プログラム片を見る限りずいぶんと古いスタイルでお書きのようですね。 歴史があるプログラムかもしれませんが、もうちょっと 担当者の方は勉強されたほうが良いかと思います。 あともう一つ。 サーバソフトがわからなかったので前回の回答で httpdと書きましたが、IISらしいということがわかりましたので IISのログを調べてみてください。 IISは使ったことないので具体的に、「ここだよっ」 とはいえませんが。

STICKY2006
質問者

お礼

たびたびの回答ありがとうございます。 非常に助かります。 教えていただいたものを検索して http://www.perl-labo.org/basic/debug/ ブラウザにそのまま表示する~方法もあるようなので、そちらを適用してみました。 ちょっとメッセージ内容が分かりづらいですが^^; ファイルに吐き出す~方法も、使えるようにしておきたいと思います。 ありがとうございました。 >>歴史のあるプログラム かもしれません。。。 開発したの自体が数年前のもののはずなので。。。 改版作業が入るかどうかは不明ですが、新しい技術~は常に勉強しておけるよう努力したいと思います。 助かりました。 どうもありがとうございました。

その他の回答 (2)

  • danmarino
  • ベストアンサー率63% (26/41)
回答No.3

KENT WEBさん(http://www.kent-web.com/)が配布されているPerlの文法チェッカ「Perl Checker」を使ってみるのもいいかもしれません。 トップページから「ユーティリティ」のリンクを辿るとダウンロードページにいけます。

参考URL:
http://www.kent-web.com/
STICKY2006
質問者

お礼

こんにちは。回答ありがとうございます。 文法チェック。 強い味方~ですねぇ。 打って、エラーメッセージなどで確認しようとしても、たまに追いかけられませんからねぇ。。。 文法のエラーだったりしたらへこみますし(汗 どんな風になるのか使ってみたいと思います。 どうもありがとうございました。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

CGIスクリプトのデバッグだったりしますか? Perlを知らない人に伝わるように説明できる自信はありませんが、 エラーメッセージの出力先を切り替えてログに残すようにできます。 モジュールを使っていいのなら、 use CGI::Carp; して warn "\$fooの値が変じゃね? ($foo)"; とかすればOK。 とくに指定しなければ httpd のログに残ります。 > ご教授願えませんでしょうか。よろしくお願いします。 教授ってのは学校でやるような系統立てた教え方ですので、 ここでするような質問で使うのはふさわしくありません。 多分「教示」と混同していると思います。

STICKY2006
質問者

お礼

こんにちは。回答ありがとうございます。 >>CGIスクリプトのデバッグ ん~。。。と。 多分そのように思います。(「.cgi」や「.pl」拡張子は、CGIスクリプト。という覚え方であっていればですが。 >>出力先を切り替えてログを残すようにできます。 なるほど。。。 ちょっと試してみました。 ただ。。。httpdのログ~がどこなのか分からず^^; ASPとPerlが混在しているサーバなので、そこもややこしくしている要因のひとつかも。。。? サーバソフトとしては、IISの方を使用しているはずですが。。。 まずは、提示していただいた文の意味と仕様~をちゃんと把握してから探っていきたいと思います。 ありがとうございます。 。。。同時に、日本語も復習しておきます_no