IT Office Nishimiyahara

個人用スマホから商用プログラミングまでなんでもお任せ下さい

エラーをブラウザで見る

      2015/02/04

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

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

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

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

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

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

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

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

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

・・・

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

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

ソースコード

respo

respo link

ZenBackWidget

 - 情報技術について