当サイトはQ&A掲示板(コミュニティ)の窓口を共有して下さるサイト様を募集しています。
[Q&A掲示板] 共有サイト様募集!#!/usr/bin/perl # コメントデータ $DATA_COMMENT = 'comment.dat'; # デコード処理 if($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } @args = split(/&/, $query); foreach $i (@args) { ($name, $val) = split(/=/, $i); $name =~ tr/+/ /; $name =~ s/%([0-9a-fA-F]{2})/pack('C', hex($1))/eg; $val =~ tr/+/ /; $val =~ s/%([0-9a-fA-F]{2})/pack('C', hex($1))/eg; $in{$name} = $val; } # データ読み込み関数 sub Get_Comment { open(DATA, "< $DATA_COMMENT"); eval{ flock(DATA, 1); }; @COMMENT_DATA = <DATA>; chomp(@COMMENT_DATA); close(DATA); } # データ書き込み関数 sub Set_Comment { open(DATA, "+< $DATA_COMMENT") or open(DATA, ">> $DATA_COMMENT"); eval { flock(DATA, 2); }; seek(DATA, 0, 0); foreach(@COMMENT_DATA) { print DATA "$_\n"; } truncate(DATA, tell(DATA)); close(DATA); } # 出力関数 sub Out { # データ読み込み &Get_Comment(); print "Content-type: text/html\n\n"; print <<E_O_M; <html> <head> <title>一言コメント</title> </head> <body> E_O_M # コメント出力 foreach(@COMMENT_DATA) { my(@tmp) = split(/\t/); print "NAME:$tmp[0]<br>\n"; print "<br>\n"; print "$tmp[1]\n"; print "<hr>"; } # フォームの出力 print <<E_O_M; <form action="test.cgi" method="POST"> 名前 <input type="text" name="name" size="20"><br> コメント <input type="text" name="comment" size="50"><br> <input type="submit" value="書き込み"> </form> </body> </html> E_O_M } # 書き込み処理関数 sub In { # データ読み込み &Get_Comment(); # 末尾にデータを追加 push(@COMMENT_DATA, "$in{'name'}\t$in{'comment'}"); # データの書き込み &Set_Comment(); print "Content-type: text/html\n\n"; print "書き込みが完了しました!\n"; } if($in{'name'} && $in{'comment'}) { &In(); } else { &Out(); }