CGIスクリプトの例
ここではWWWで行う簡単な電子掲示板を作ってみます。入力フォームと掲示物を表示するためのCGIスクリプトの2つを作成します。まず、入力フォーム部は<form>タグを使用し、CGIスクリプトではメッセージが投稿されるとファイルへ書き込むと同時に新しいメッセージを加え、電子掲示板を表示します。
#!/usr/bin/perl $boardfile = "chat.dat"; 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 Sample</title>\n"; print "</head>\n"; print "<body>\n"; print "<blockquote><font size=2>\n"; print "<h3>Yokochin's Electoric Board</h3>\n"; print "\n"; print "<hr>\n"; print "\n"; print "<form method=\"post\" action=\"/cgi-bin/chat.cgi\">\n"; print "お名前: <input name=\"from\"><p>\n"; print "メッセージ:<p>\n"; print "<textarea rows=5 cols=60 name=\"message\"></textarea><p>\n"; print "\n"; print "<input type=\"submit\" value=\"メッセージを送る\"><p>\n"; print "</form>\n"; print "\n"; print "</font></blockquote>\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を利用した電子掲示板ツールもあります。