フレーム下側に表示されるファイル
ここには自分自身に入力データを渡し、内容をファイル(keiji.txt)に保存し、
さらに引き続き入力が行えるように名前(1行入力)と
コメント(テキストエリア)の入力フォームを表示するCGIプログラム表示する。
 まず、データを受け取って、分割する部分を記述する。名前はname、コメントはcomとする。
#!/usr/local/bin/perl
require 'cgi-lib.pl';
&ReadParse();

$name=$in{"name"};
$com=$in{"com"};

次に、名前とコメントの少なくともどちらか一方が入力されている場合、
ファイル(keiji.txt)へデータの保存を行う。
名前の入力がなければ「匿名さん」という名前をつけ、
コメントの入力がなければ、「こんにちは。」とコメント内容を補う。

if($name ne "" or $com ne ""){
open(NEW,">new.txt");
# flock(NEW,2);

if($name ne ""){print NEW "お名前:$name<br>\n";}
else{print NEW "匿名さん<br>\n";}
if($com ne ""){print NEW "メッセージ:$com<p><hr>\n";}
else{print NEW "こんにちは。<p>\n";}

open(IN,"keiji.txt");
# flock(IN,2);
while($data=<IN>){print NEW $data;}
close(IN);
close(NEW);
rename("new.txt","keiji.txt");
# flock(IN,8);
# flock(NEW,8);

}

1行ずつ説明していく。

1行目:名前の欄と、コメントの欄の内少なくとも一方が入力されているか判断する。
どちらも入力されていなければ、一番最後の「}」の次に実行が移る。

2、3行目:入力がある場合、new.txtというファイルを書き込みモードで開き、ロックする。

5行目:名前が空欄でなければ、名前をファイル(new.txt)に書き込み、

6行目:空欄であれば、匿名さんと書き込む。

7行目:コメントが空欄でなければ、コメントをファイル(new.txt)に書き込み、

8行目:空欄であれば、「こんにちは。」とファイルに書き込む。

10、11行目:以前に入力されたデータを
keiji.txtから読込むために読込みモードで開き、ロックする。

12行目:keiji.txtから1行ずつ読込み、new.txtに書き込んでいく。

13、14行目:keiji.txt、new.txtを閉じる。

15行目:new.txtをkeiji.txtという名前に変更する。

16、17行目:ファイルのロックを解除する。
(ファイル名の変更は書き込みと同じ操作になるので、
ファイル名を変更してからロックを解除する。)