#!/usr/bin/perl $boardfile = "/tmp/board"; print "Content-type: text/html\n\n"; # POSTが実行(Submit)された場合にメッセージをファイルに記入します。 # CGIスクリプトが呼び出されただけの場合は、電子掲示板を表示するだけ # です。 if ($ENV{'REQUEST_METHOD'} eq "POST") { %form = &read_input; $your_name = $form{'from'}; $your_message = $form{'message'}; open(BD, ">>$boardfile") || die "not board file"; print(BD "<hr>\n"); print(BD "<i>$your_name</i><br>\n"); print(BD "$your_message\n"); print(BD "\n"); close(BD); &create_page; } else { &create_page; } # ページ作成のサブルーチン sub create_page { print "<head>\n"; print "<title>Electoric Board for WWW</title>\n"; print "</head>\n"; print "<body>\n"; print "<h2>Electoric Board for WWW</h2>\n"; print "\n"; print "<hr>\n"; print "\n"; print "<form method=\"POST\" action=\"/cgi-bin/chat.cgi\">\n"; print "Your name: <input name=\"from\"><p>\n"; print "Your message:<p>\n"; print "<textarea rows=5 cols=60 name=\"message\"></textarea><p>\n"; print "\n"; print "<input type=\"submit\" value=\"Post a mesasge\"><p>\n"; print "</form>\n"; print "\n"; print "\n"; # メッセージファイルの読み込みと表示を行います。 open(BOARD, "$boardfile") || die "not board file"; while(<BOARD>) { print ; } close(BOARD); print "\n"; print "</body>\n"; } sub read_input { local ($buffer, @pairs, $pair, $name, $value, %FORM); # Read in text $ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/; if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%(..)/pack("C", hex($1))/eg; $FORM{$name} = $value; } %FORM; }
これよりも非常に高機能な HyperNews と呼ばれるWWWを利用した電子掲示板ツールもあります。