|
|
|
eval |
eval は引数に与えたブロックや文字列をスクリプトとして実行し return の値や
エラーの場合はスクリプト名とエラーを起こした行番号を $@ へ格納します。
これを利用すると不具合を起こした行を特定する事が出来非常に便利です。
書式例 |
eval
{
☆
}; |
☆ 実行する処理 |
☆ の処理を実行し、 return で返された値や、エラーが発生した場合
は $@ へエラーを起こしたスクリプト名と行番号が入ります。
eval { }; と ; で閉じている事に注意して下さい。 |
エラーの発見をする
【追加前のスクリプト】
例えば下のように別のファイルから読み込んで実行するスクリプトにエラーがあったとします。
これで何処にエラーがあるのか分からない場合は eval で囲んでみます。
【追加後のスクリプト】
下のように eval で囲うと、そのブロックを実行しエラーがあった場合 $@ に格納しますので、
ブロック直後くらいに $@ があった場合画面表示するような文を追加しておきます。
ここで aaa.cgi が見つからないエラーだったとすると、下のように画面表示されます。
test.cgi の 5行目(aaa.cgi) の読込みでエラーがあった事が分かります。
Can't locate ./aaa.cgi in @INC (@INC contains:
/usr/local/lib/perl5/5.00503/sun4-solaris /usr/local/lib/perl5/5.00503
/usr/local/lib/perl5/site_perl/5.005/sun4-solaris
/usr/local/lib/perl5/site_perl/5.005 .) at ./test.cgi line 5.
読み込んだスクリプト内でエラーがあった場合の表示
読み込んだスクリプト内を実行した際にエラーとなった場合も画面表示をしてくれます。
書き方は上記と同じで、実行時にエラーとなったとします。
【不具合の部分】
例えば下のように読み込んだスクリプト内に不具合があったとします( open行
の ; が無い)
この場合下のように表示されます。
aaa.cgi の 4行目で ; が無い為に ) @aaa と 上の行とつながってしまっている事が分かります。
syntax error at ./aaa.cgi line 4, near ") @aaa "
|
|
|
|