ブログで趣味でプログラミングからお料理まで呟いています。よろしくー。(^-^)/


先月  2024年 5月  来月



1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

文字サイズ変更:
トップページ > Perlについて

●Perlについて●

2024-05-04 18:23:39

エラーについて2



以前に「エラーについて」を書きましたが、案外書く人がいないのか好評だったのでまた続きを書きたいと思います。

プログラムがあっていると思われるのに、全く表示されない、500サーバーエラーが表示されてしまう場合などがあります。

そのようなときは、やはり簡単なデバッグ作業が必要だと思われます。

でも、デバッグ作業なんてやったことがない、という方はこんな方法はいかがでしょうか。

use KCatch;

KCatch.pmモジュールというものがインターネット上にあります。

KCatch.pmは、エラー捕捉モジュールですので、普通ならサーバーエラーになりそうなものも捕捉して表示してくれますので、かなり助かります。

ダウンロードしたら、CGIのあるフォルダにアップロードしてcgiではuseしましょう。
幾つかの書き方は、KCatch.pmモジュールのサイトに書いてあります。


それから、このモジュールを用いてもサーバーエラーが表示されることがあります。

そんな時は、CGIのエラーのある手前くらいから、HTML出力しましょう。
それ以降は「__END__」という特殊な書き方で、それ以降をコメントアウトできます。
テキストの左端から書いてくださいね。

それから、変数の中身をHTML出力したり、if文の分岐の中を通っているかどうかチェック単語をなんでもいいから決めて、表示させるのも手だと思います。

それと、ループ(for、foreach、whileなど)の中身もHTML表示しましょう。

ここで表示されないとなると、おかしいですよね?
変数の中身がカラ(つまり、null)だとしたらなぜなのか。
変数名が変数宣言時と違う名前なのか、つまり間違っているとか。
if文(分岐)を通っていない可能性があったり。

色々と気づいてくると思われます。

それと、エラー文が出て、ビックリする方もいあるかと思いますが、まず英文で表示されてても大丈夫です。

先頭にグローバルって表示されてれば、大抵変数宣言忘れてないかな?ってエラーだし、「}」山かっこなどが表示されるようなら、カッコの数が開いたのと閉じたので、数が合わないんですね。

あとは、文章の最後の「;」セミコロン忘れも多いかと思われます。

それと、小難しい英文だったとしても、「...~line 120」などとエラーの文章の最後に表示されていれば、120行目がエラーがある場所だな、とあたりを付けてもいいと思います。

それと、エラーがゴッソリ表示されてあわてそうになるかと思いますが、一番先頭のエラーを直せば、案外サックリエラーが無くなることがあります。
だから、先頭からエラーを直していければいいと思いますよ。

それと、エディターじゃないとわかりずらいのが、プログラム間で全角スペースが入っている場合。
エラーの原因になりますので、削除しましょう。

全角スペースは、2バイト文字、つまり日本語の文字コードを英語圏であるPerlのプログラム間に入れてしまうとエラーになります。
その代わり、半角スペースは大丈夫です。

最後に、

use strict;

これは、シンタックス、つまりプログラムのコードを厳しく見てくれるので、エラーもでやすくなります。
必ずファイルの先頭でuseした方がいいと思います。

use warnings;

これも書くと良いとされるモジュールです。
でも、厳しくなりすぎるところがあるかもしれません。(^-^;

それでは。
Print Twitter(test) short URL いいね:14

back to the TOP


PR (i)