このページでは、『Perlで作るCGI入門 基礎編』の誤りと訂正を公開します。
あなたのご意見・感想をお送りください。 あなたの一言が大きなはげみとなりますので、どんなことでもどうぞ。
旧:ASCIIモード ↓ 新:ASCIIモード(TEXTモード) 旧:BINARYモード ↓ 新:BINARYモード(IMAGEモード、RAW DATAモード) (3刷で修正)
第1刷、第2刷の lock_file と unlock_file はOSによっては
正常に動作しない場合があるようです(常にロック失敗になる)。
以下のサブルーチンで置き換えてみてください。
# ロック
sub lock_file {
local(*FILE) = @_;
if ($uselock) {
eval("flock(FILE, 2)"); # 2=LOCK_EX
if ($@) {
# flock が使えない場合、ここに来る。
return 0;
}
}
return 1;
}
# アンロック
sub unlock_file {
local(*FILE) = @_;
if ($uselock) {
eval("flock(FILE, 8)"); # 8=LOCK_UN
}
}
(3刷で修正)
プログラム例中の else if は elsif の誤りです。 (5刷で修正予定)
SELECTED は CHECKED の誤り。 (読者からの指摘のメールによる) (2刷で修正)
自分のホームページのディレクトリに robots.txt というファイルを置いておけば 自分のページを掲載されないようにすることができるというのは不正確な表現である。 ロボットを制御するためには、 robots.txt をそのサイトの仮想パスのルートに置かなければならないため、 サイトの管理者でなければ設定ができない。 詳しくはロボットのページを参照。 (2刷で修正)
-rwxr-xr-x は誤り。 -rw-rw-rw- が正しい。 (4刷で修正)
<NOFRAMES>を <FRAMESET>の外側に置いているが、 <NOFRAMES>は <FRAMESET>の内部に置くべき。 (4刷で修正)
誤: $lines[@#lines]に最後の行が入る。 正: $lines[$#lines]に最後の行が入る。
<FONT SIZE=+3> ↓ <FONT SIZE="+3"> (3刷で修正)
段落の区切り(改行2回分)
P (パラグラフ)は Paragraph (段落)の略。
例:
最初の段落<P>次の段落
↓
段落を表す。
P (パラグラフ)は Paragraph (段落)の略。
例:
<P>最初の段落</P><P>次の段落</P>
(3刷で修正)
<NOFRAMES>を <FRAMESET>の外側に置いているが、
<NOFRAMES>は <FRAMESET>の内部に置くべき。
<HTML>
<HEAD>
<TITLE>タイトル</TITLE>
</HEAD>
<FRAMESET ...>
...ここに<FRAME>を書く...
<NOFRAMES>
...ここにフレームに対応していないブラウザ向けの内容を書く...
</NOFRAMES>
</FRAMESET>
</HTML>
(3刷で修正)
付録I:「IISで実行する場合の注意」の中の
「方法2:cmd= ではなく cgi= を利用」の部分に修正もれがある。
# 引数の数の確認
# if ($#ARGV < 0) {
# print "Usage: counter.pl countername\n";
# exit(0);
# }
print "Content-type: text/plain\n\n";
# カウンタ名
$countername = 'countday';
(2刷で修正)