CGIエラー対策、陥りやすい罠

CGIを使う上で、間違えやすいこと、エラー対策を紹介します。

文字が化ける


CGIでHTMLを出力する際に、一部の漢字が文字化けする場合があります。
その場合、文字化けする漢字の後ろに「\」を入れます。

よく化ける文字

「ソ」、「表」、「能」、「予」など

サンプル
元「表計算などのビジネスソフト」

修正後「表\計算などのビジネスソ\フト」

変数名の注意


Perlでは数字から始まる変数名は使えない。

「$111」、「$6mozi」、「$3_sco」

これらはすべてエラー。

ヘッダーエラー出る


CGIでお決まりの一行目に書く、

#!/usr/bin/perl

しかし、これだけでエラーが出る場合がある。
改行コードの問題で、UNIXマシンでCGIを動かした際、Windowsで書いたソースにエラーが出るときがあるのだ。

Windowsの改行コードは「\r\n」
Unixの改行コードは「\n」

なので、「\r」が余計なヘッダだと間違われ、エラーになる場合がある。
もし、エラーが出た場合、一行目を以下のように修正する

#!/usr/bin/perl --

マイナスをスペースを空けて2個入れる

ヒアドキュメントのエラー


ヒアドキュメントというのは、print文を何行も書くのがめんどくさいときに便利な機能です。
例えば、

print <<"END_OF_HEADER";
<html>
<head>
<title>タイトル</title>
END_OF_HEADER

というのと

print "<html>\n";
print "<head>\n";
print "<title>タイトル</title>\n";

は、同じになります。
便利な機能なのですが、終端文字列の前後に空白文字などを入れるとエラーになります。

エラーの例
print <<"END_OF_HEADER";
<html>
<head>
<title>タイトル</title>
 END_OF_HEADER