練習問題の答

CGIカウンタプログラム(cgi_counter.cgi)は以下のようになります。カウンタプログラムからの変更は太字で示してあります。

#!/usr/local/bin/perl

# ファイルcountdataをファイルハンドルCOUNTでオープン
# オープンできないときにはエラーメッセージを表示して強制終了
open (COUNT, "+<countdata") || die "File 'countdata' Open Error.";

# ファイルのロック
flock (COUNT,2);

# 変数$counterにファイルハンドルCOUNTから1行読み込み
$counter = <COUNT>;

# カウントアップ
$counter = $counter + 1;

# ファイルポインタを先頭に戻す
seek (COUNT, 0, 0);

# ファイルハンドルCOUNTに出力(書き込み)
print COUNT $counter;

# ファイルのロック解除
flock (COUNT,8);

# ファイルのクローズ
close (COUNT);

# HTML ヘッダー
print "Content-type: text/html\n\n";
print <<"EOM";
<html>
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
</head>
<body>
EOM

# カウンタの値を表示
print $counter;

# HTML フッター
print "</body>\n</html>\n";