電子書籍の厳選無料作品が豊富!

perlはかなり初心者です。この前、掲示板の作り方を解説しているサイト様でスクリプトをお借りしていじってみました。解説がところどころ書いてあるので構造は大体理解できましたが、HTML以外のところは全然改造はできません。この掲示板は、書き込みが新着順に上から並ぶのですが、古い順に上から並べるにはどこをどうすればよいのでしょう?どなたかお願いします。

require "cgi-lib.pl";
print "Content-type: text/html; charset=Shift_JIS\n\n";
# フォーム部分を表示する
print <<EOL;
ここはフォームのHTMLを書きました
EOL

&ReadParse(*form);

# フォームの値を取得
$namae = $form{"namae"};
$message = $form{"message"};


# ログファイル読み込み
open(IN, "bbs.txt");
@log = <IN>;
close(IN);

# メッセージが入力されているときは書き込み処理を行なう
if ($message ne "") {
# タグの無効化
&deltag($namae);
&deltag($message);

# 改行を<br>に変換
$message =~ s/\r\n/<br>/g; # Windows系(\r\n)
$message =~ s/\r/<br>/g; # Mac系(\r)
$message =~ s/\n/<br>/g; # UNIX系(\n)

# ログ先頭に書き込み内容を格納
unshift @log, "$namae\t$message\n";

# ログファイルにロックをかけて書き込み
open(OUT, "+< bbs.txt");
flock(OUT, 2);
truncate(OUT, 0);
seek(OUT, 0, 0);
print OUT @log;
close(OUT);
}

# ログ表示
foreach $data (@log) {
chop $data;
($namae,$message) = split(/\t/, $data);
print <<EOL;
<br><br>$namae<br>$message
EOL
}

print <<EOL;
</body>
</html>
EOL

# タグを除去するサブルーチン
sub deltag {
$_[0] =~ s/</&lt;/g;
$_[0] =~ s/>/&gt;/g;
}

A 回答 (1件)

いくつか方法があると思いますが、ログ表示の部分を変更する方法について書きます(それが一番修正量が少ないでしょうから)。



foreach $data (@log) {
の行の前に、
@log = reverse @log;
を加えてください。
reverseで配列の並び順を反転しています。
    • good
    • 0
この回答へのお礼

ありがとうございます。出来ました。

お礼日時:2006/12/30 21:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!