« 変換にかかる時間(その2) | メイン | 漢字コードの変換(その3) »

エラーをブラウザで見る

エラーが無ければそれに越した事は無いけれど、開発中のスクリプトではエラーが発生してしまうのはよくある事だ。

問題は、CGIとして実行すると、簡単にエラー出力を見れない事。ファイルのロックのページで書いた方法では、文法間違いは(Apacheでは)表示されなかった。

で、先日手に入れた「実用 Perlプログラミング(発行所/オライリー・ジャパン)」によれば、「BEGIN」というサブルーチン(?)はコンパイルする前、つまり、全体の文法チェックなどをする前に実行するらしい。

ということは、標準エラー出力の内容を標準出力に出力するような命令(ややこしい言い方(^^;;;)を「BEGIN」に書いておけば、文法エラーもちゃんとブラウザでチェックできる。

あと、1行目は今まで「#!perl」と書いていたけれど、freewebを借りたとき、ここのPerlが「/usr/local/bin/perl」にあるようなので、ローカル環境(のApache)でもこの設定で動くように環境を変更した。で、その環境とは?

Apacheが入っているドライブ、仮に「c:\apache」に入っている場合、CGIからディレクトリの「/」を指定すると「c:\」が対象になる。これはCGIファイル自体のドライブは関係ないようだ。ということで、ActivePerlならインストールディレクトリを「c:\usr\local」にする。そうすると、実際のPerlは「c:\usr\local\bin\perl.exe」に存在する。つまり、Apacheで動作しているCGIからは「/usr/local/bin/perl」でPerlが呼出せる事になるのだ。

そういうわけで、これからは「#!/usr/local/bin/perl」で行きます。

また、最初の行に、Perlで使用するオプションを付け加えて書くと、そのオプションをつけて実行してくれる。仮に「-v」をつけると、コンパイルせずにバージョン情報だけを出力してくれた(笑)

一般的には「-w」をつけて、細かいエラーの探索に使えそうだ。このオプションをつけると、変数名の間違い程度なら簡単に判明する。

・・・

今回、ローカル環境から完全に移行するために「jcode.pl」に変更しました。また、同じ理由で、「このスクリプトを実行するのは好ましくない」と思ったので取りやめました。

ちなみに、今のプロバイダのNETAGEでは「#!/usr/bin/perl」です(2000年5月現在)。

ソースコード

#!/usr/bin/perl -w
 
BEGIN{
	print "Content-type: text/plain\n\n";
	open(STDERR, ">&STDOUT");
	$|=1;
}
 
{
my $_;

カテゴリ:

トラックバック

このエントリーのトラックバックURL:

同一カテゴリの最新記事

最近のエントリー

Amazon.co.jp

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type 3.36
Amazon.co.jp