フリーCGIスクリプト配布サイト。
これまでで作成した掲示板は、投稿されたすべての記事が保存されました。ですがそれではログファイルのサイズがいつかは膨大なものになってしまいます。
今回は、指定した件数以上のログは自動的に削除されるように改造したいと思います。
投稿内容の記録処理は
if (open(FH, "bbs.txt")) {
@file = <FH>;
close(FH);
で bbs.txt
の内容を @file
に読み込み
unshift(@file, "$in{'handle'}\t$in{'message'}\t$date\n");
で今回の投稿内容を追加し
if (open(FH, ">bbs.txt")) {
print FH @file;
close(FH);
で新しく作成した投稿データを bbs.txt
に保存しました。
一定件数以上を自動的に削除する方法はいくつかありますが、手軽なのは splice
関数を使用する方法です。splice
は以下の書式で、配列内のデータを指定した件数以上のデータを削除してくれます。
splice(配列名, 削除の開始位置);
具体的には、以下のようなプログラムになります。
splice(@file, 30);
この場合、@file
内の30件目以降の値を削除します。ですから、上の行をファイルへの記録処理の直前に挿入すればOKです。