#! /usr/local/bin/perl # #Simpleゆいちゃっと(pref.cgi) # #pref.cgiは、chat.cgiとenter.cgiで、共通して使われるサブルーチン集です。 sub init{#初期設定など $chat_file = './chat.dat'; #チャットログ(ファイル名はなるべく変更しておくこと。) $method = 'GET';#やっぱり、GETよねぇ〜 $title = 'Simpleゆいちゃっと'; $body=''; $max = 50;#ログの最大行数 $host = $ENV{'REMOTE_HOST'};if($host=~/bmc.*kyoto/){$host="ppp753.master.ad.jp";} $metacode = '';#SJIS認識させる #ロックファイルを使用するなら、#を消す。 #$lockfile = './lock/lock-file.lock'; #$retry = 5; #while (!symlink(".", $lockfile)) { #if (--$retry <= 0) { print "Status: 204\n\n"; unlink($lockfile); exit; } #sleep(1); #} #ロックファイルここまで }#init END sub ended{#exitを行うためだけのもの。 # unlink($lock_file);#ロックファイルを使用するなら、#を消す。 print "Content-type: text/plain\n\n $_[0] \n"if($_[0]);#この行は削除可です。 exit; }#ended END sub decode{#一般的なデコード&変数への代入 $buffer = $ENV{'QUERY_STRING'}; @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/; close(DB); }#readlog END sub writelog{ #$valueを@linesに加えたのち、書き込む (@lines < $max-1) || (@lines = @lines[0 .. $max - 2]); unshift( @lines,$value); open(DB,">$chat_file") || &ended('$chat_file write error'); eval 'flock(DB,2);'; seek(DB,0,0); print DB @lines; eval 'flock(DB,8);'; close(DB); }#writelog END sub hide{#HTML生成時に共有される部分を一つにまとめる。 $hidden=<<"_HIDE_"; _HIDE_ }#hide END 1; # RETURN TRUE __END__