WeB DoRaMa for pdx
の編集
http://webdoramamuseum.s1003.xrea.com/?WeB+DoRaMa+for+pdx
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
AutoTicketLinkName
BracketName
CGIってなんなの?
CGIのいろは(CGI設置講座)&CGIのFAQ
CGIのエラーメッセージ
CGIを手に入れよう!
CGI設置のまとめ
FlashDORAMA
FormattingRules
FrontPage
FTPでアップロード
Help
InterWiki
InterWikiName
InterWikiSandBox
MenuBar
P-Drama
Perlのパスってなんやねん
PHP
PHP版WeB DoRaMa
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
WeB DoRaMa for pdx
WeB DoRaMa icon Version
WeB DoRaMa Java And MOBILE Version
WeB DoRaMa Java Version
WeB DoRaMa Plus
WeB DoRaMa P MOBILE Version
WeB DoRaMa P Version
WeB DoRaMaの歴史(正史)
WeB DoRaMa オリジナルバージョン
WeB DoRaMaシリーズ
WeB DoRaMa改 elmoバージョン
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
そのほか
ウェブサーバから情報を手に入れる
ウェブドラマ
ウェブドラマとは?
ウェブドラマ博物館
ウェブドラマ吹き出しバージョン
ウェブドラマ展示室
エディタで開く
サーバエラー
ショートショート劇場
ストーリーボード
ドラまんぼ
ドラマにおける禁じ手
ドラマの最期
ドラマ塾
ドラマ塾 1.入門編
ドラマ塾 2.設立編
パーミッション(属性)!?
基礎的な問題
改造指南
楽屋裏
解凍(伸張)ってなんだろう?
設置ミスの問題
運営に不向きなウェブサーバ
運用に支障がないウェブサーバ
[[WeB DoRaMaシリーズ]] #contents #norelated #br * WeB DoRaMa for PDX [#rcf0cd0c] Base Script By WeB DoRaMa Version 1.25+ ** はじめに [#c7883852] WeB DoRaMa for PDXは、[[CGI-StaTion:http://www7.big.or.jp/~jawa/]]のじゃわさんが作られた[[WeB DoRaMa:http://www7.big.or.jp/~jawa/download/dorama/]]のファイルをオープンネットコンテンツで閲覧、書込みができるツールです。~ WeB DoRaMaは単純明快で、登場人物とセリフを書きこむことによってストーリーを進めていくというゲームです。 ** このプログラムについて [#g777f097] プログラム冒頭の、「ドラマのカスタマイズ項目」の部分をお使いいただく環境に合せてください。~ その他の、設定はWeB DoRaMaと共通です。~ 特にWeB DoRaMa本体がなくても動作しますが、その場合、 - index.cgi [755] - dorama.log [666] の設定が必要になります。~ また、内部処理として「pdxturn」を使用しているため、&color(#ff0000,#ffffff){必ずWeB DoRaMa用にディレクトリ};を設けてください。「pdxturn」を使用ということから、IEやNNなどのブラウザー上からは表示がされません。~ (直したほうがいいかも…) ** プログラムはこちらです。 [#mcf5a65a] - [[&ref(http://webdoramamuseum.s1003.xrea.com/common/img/download/dl_icon.gif,left,nolink,18x18,dorama-pdx.cgi);dorama-pdx.cgi:http://webdoramamuseum.s1003.xrea.com/common/cgi-bin/file/perldnload.cgi?dlfile=http://webdoramamuseum.s1003.xrea.com/common/file/dorama-pdx_cgi.txt&dlname=dorama-pdx_cgi.txt]]~ (このサンプルは、当サイトでの使用例です。プログラムのファイル名はindex.cgiに変更しています。) #!/usr/local/bin/perl #| WeB DoRaMa for pdx ver 1.0 #| #| typea (2000/3/8) #| HomePageUrl http://www.digimaga.com/p/ ####### Special thanks. ###### #| WeB DoRaMa Version 1.25+ #| This script is free. #| #| Author Shigeto Nakazawa.(1996/11/27) #| HomePageUrl http://www7.big.or.jp/~jawa/ #| #| Special Thanks おかぴ #| HomePgaeUrl http://www.mediawars.or.jp/~okapin/ # ////////////////////////////////////////////////////////// # オプションの設定を変更することができます。 # 変更する場合は、readme.htm をご覧になってから行ってください。 # 設定変更には充分注意してください。 # ////////////////////////////////////////////////////////// # ---------------------------------------------------------- # ドラマのカスタマイズ項目です。 # ---------------------------------------------------------- $max = 150; # 登録・表示最大数(あまりに多いと危険) $view = 20; # 初期画面で表示する数 $title = 'WeB DoRaMa'; # タイトル # このプログラムの設置URL $url = '//www.digimaga.com/p/dorama/index.cgi'; # ONCのトップページ(「戻る」の戻り先) $back_url = '//www.digimaga.com/p/'; # ONCの切断ページ $desc_url = '//www.digimaga.com/p/onc/desc.txt'; $actors[1] = 'だいすけ'; # ' ' の中だけを書き換え、 $actors[2] = 'ゆうこ'; # それ以外の記号は $actors[3] = 'けんじ'; # 絶対に消したりしないこと! $actors[4] = 'えり'; $actors[5] = '効果音'; $actors[6] = 'ナレーション'; # year:年 mon:月 day:日 hour:時 min:分 sec:秒 $date = "mon/day hour:min"; # 一桁のとき二桁に修正するか? # 0:しない 1:する(時分秒) 2:する(全て) $date_type = 2; # IPアドレスの表示 (0:表示しない 1:表示する) $ip_check = 0; # リモートホストの表示 (0:表示しない 1:表示する) $rh_check = 0; # ファイル関連の設定 $logfile = './dorama.log'; # 記録用ファイル $lock1 = './dorama1.lock'; # 鍵ファイル(1) $lock2 = './dorama2.lock'; # 鍵ファイル(2) $lock_flag = 1; # 鍵ファイルの 1:使用 0:不使用 # ////////////////////////////////////////////////////////// # オプションの設定はここまでです。 # 以下は CGI のプログラムです。 # 書き換えは個人の責任で行って下さい。 # ////////////////////////////////////////////////////////// &read_form; # pdxturn = 1 if($FORM{'pdxturn'} == 1){ @logs = &read_file($logfile); &sel_dorama; print<<"_EOF_"; Content-Type: text/plain From: $url?no=$no Content-Type: Text/X-PmailDX <SEL=19;$back_url> <SEL=20;$desc_url> 今ストーリーはこうなっています。 -------------- _EOF_ &html_dorama($view-1,0); print "--------------\n"; print "①"; print "$actors[1]\n"; print "②$actors[2]\n"; print "③$actors[3]\n"; print "④$actors[4]\n"; print "⑤$actors[5]\n"; print "⑥$actors[6]\n"; print "発言したい登場人物の番号を入力して下さい。\n"; print "⑲戻る\n"; print "⑳終了\n"; print "--------------\n"; print "Jawa,typea\n"; exit; } # pdxturn = 2 if($FORM{'pdxturn'} == 2){ print<<"_EOF_"; Content-Type: text/plain From: $url?actor=$FORM{'pdxdata'}&no=$FORM{'no'} Content-Type: Text/X-PmailDX <SEL=19;$back_url> <SEL=20;$desc_url> $actors[$FORM{'pdxdata'}]の セリフを入力して下さい。 注意:改行は入力されません。 100文字以上も入力されません。 ⑲戻る ⑳終了 -------------- Jawa,typea _EOF_ exit; } #pdxturn = 3 if($FORM{'pdxturn'} == 3){ @logs = &read_file($logfile); print<<"_EOF_"; Content-Type: text/plain From: $back_url Content-Type: Text/X-PmailDX <SEL=20;$desc_url> _EOF_ &form_check; &get_date; $no = ($FORM{'no'} + 1) % 9999; $ipad = $FORM{'pdxfrom'}; $rhost = $ENV{'REMOTE_HOST'}; unshift(@logs,"$no<>$date<>$FORM{'pdxdata'}<>$FORM{'actor'}<>$rhost<>$ipad\n"); while (@logs>$max) { pop(@logs); } &html_dorama($view-1,0); &write_file($logfile,@logs); print<<"_EOF_"; -------------- 2回続けて書き込みできません。 また来てくださいね。 ⑲戻る ⑳終了 -------------- Jawa,typea _EOF_ exit; } # pdxturn > 3 print<<"_EOF_"; Content-Type: text/plain From: $back_url Content-Type: Text/X-PmailDX <SEL=19;$back_url> <SEL=20;$desc_url> _EOF_ &error(0,"入力がおかしいか、バグです。"); ###### subroutin ###### # [ $no出力 ] # sub sel_dorama { local($view,$flag) = @_; ($no,$date,$dorama,$actor,$rhost,$ipad) = split(/<>/,$logs[0]); } # [ ドラマ出力 ] # sub html_dorama { local($view,$flag) = @_; for ($i=$view;$i>-1;$i--) { ($no,$date,$dorama,$actor,$rhost,$ipad) = split(/<>/,$logs[$i]); print "[$no]$actors[$actor]\n"; if ($flag) { print "$date\n"; } print "「$dorama」"; if ($rh_check || $ip_check) { print " ["; if ($rh_check) { print $rhost; } print " "; if ($ip_check) { print $ipad; } print "]"; } if (!$flag) { print "\n"; } } } # [ 日付取得 ] # sub get_date { $ENV{'TZ'} = "JST-9"; # TimeZone (日本時間 = 国際標準時(JST) - 9時間) local($sec,$min,$hour,$day,$mon,$year) = localtime(); $mon++; if ($date_type) { if ($sec < 10) { $sec = "0$sec"; } # 秒の修正 if ($min < 10) { $min = "0$min"; } # 分 〃 if ($hour < 10) { $hour = "0$hour"; } # 時 〃 if ($date_type > 1) { if ($mon < 10) { $mon = "0$mon"; } # 月 〃 if ($day < 10) { $day = "0$day"; } # 日 〃 } } if ($year > 99) { $year = $year - 100; } $date =~ s/year/$year/ig; $date =~ s/mon/$mon/ig; $date =~ s/day/$day/ig; $date =~ s/hour/$hour/ig; $date =~ s/min/$min/ig; $date =~ s/sec/$sec/ig; } # [ フォームチェック ] # sub form_check { local($ck_no,$date,$dorama,$ck_actor,$rhost,$ipa2) = split(/<>/,$logs[0]); chomp $ipa2; if ($ck_no ne $FORM{'no'}) { &error(0,"タイムオーバーだよ、きみぃ。もう、誰かが執筆しちゃったみたいだよ。一度戻って、再読み込みするといいだろう。"); } if ($ck_actor == $FORM{'actor'}) { &error(0,"同じ人がセリフを言うのは駄目だよ。"); } if (!$actors[$FORM{'actor'}]) { &error(0,"セリフを言う人を選ばないといけないなぁ。"); } if (!$FORM{'pdxdata'} || length($FORM{'pdxdata'}) > 300) { &error(0,"そんなセリフは認められないなぁ。"); } # 独自に機能を追加しています。 # 下のコメントをはずした場合、同じ人が二度続けて書き込み出来ません。 # if ($ipa2 eq $FORM{'pdxfrom'}) { # &error(0,"2回続けて書き込みできません。"); # } } # [ フォームからデータ取得 ] # sub read_form { local($pair,$buffer); $buffer = $ENV{'QUERY_STRING'}; $buffer =~ s/%0d%0a//g; local(@pairs) = split(/&/,$buffer); foreach (@pairs) { local($name,$value) = split(/=/,$_); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; # $FORM{$name} = &change_code($value); $FORM{$name} = $value; } } # [ 記録ファイルの処理 ] # sub read_file { local($logfile) = $_[0]; if (!open(IN,$logfile)) { &unlock_file; &error(1,"記録ファイルの読み込み不可"); } local(@files) = <IN>; close(IN); return @files; } sub write_file { local($logfile,@lines) = @_; &lock_file($lock1);&lock_file($lock2); if ($lock_error) { &error(1,"ロックファイルを検出しました。時間をおいてご利用下さい。"); } if (!open(OUT,">$logfile")) { &unlock_file; &error(1,"記録ファイルの書き込み不可"); } print OUT @lines; close(OUT); &unlock_file($lock2);&unlock_file($lock1); return @lines; } # [ ロック機構 ] # sub lock_file { local($lockfile) = $_[0]; if (!$lock_flag) { return 1; } local($retry) = 5; while (-f $lockfile) { if ($retry-- <= 0) { local($mtime) = (stat($lockfile))[9]; if ($mtime < time()-60*15) { &unlock_file($lockfile); } $lock_error = 1; return 1; } sleep 1; } open (LOCK,">$lockfile"); close(LOCK); return 1; } sub unlock_file { local($lockfile) = $_[0]; unlink($lockfile); } # [ エラー処理 ] # sub error { print<<"_EOF_"; $_[1] ⑲戻る ⑳終了 -------------- Jawa,typea _EOF_ exit; } ** 最後に [#g87b1317] WeB DoRaMa for PDXの改造、再配布などは自由ですが、大元のWeB DoRaMaの著作権はじゃわさんが保持します。~ また、WeB DoRaMa for PDXの移植にご了解をいただけましたじゃわさんに、感謝です。~ WeB DoRaMa for PDXで不明な点があった場合は、くれぐれもじゃわさんに直接質問されないようにお願いします。~ ~ オープンネットコンテンツそのものの終了により当ドラマは利用できませんので悪しからず。 * 関連ページ [#s9595c02] #related
タイムスタンプを変更しない
[[WeB DoRaMaシリーズ]] #contents #norelated #br * WeB DoRaMa for PDX [#rcf0cd0c] Base Script By WeB DoRaMa Version 1.25+ ** はじめに [#c7883852] WeB DoRaMa for PDXは、[[CGI-StaTion:http://www7.big.or.jp/~jawa/]]のじゃわさんが作られた[[WeB DoRaMa:http://www7.big.or.jp/~jawa/download/dorama/]]のファイルをオープンネットコンテンツで閲覧、書込みができるツールです。~ WeB DoRaMaは単純明快で、登場人物とセリフを書きこむことによってストーリーを進めていくというゲームです。 ** このプログラムについて [#g777f097] プログラム冒頭の、「ドラマのカスタマイズ項目」の部分をお使いいただく環境に合せてください。~ その他の、設定はWeB DoRaMaと共通です。~ 特にWeB DoRaMa本体がなくても動作しますが、その場合、 - index.cgi [755] - dorama.log [666] の設定が必要になります。~ また、内部処理として「pdxturn」を使用しているため、&color(#ff0000,#ffffff){必ずWeB DoRaMa用にディレクトリ};を設けてください。「pdxturn」を使用ということから、IEやNNなどのブラウザー上からは表示がされません。~ (直したほうがいいかも…) ** プログラムはこちらです。 [#mcf5a65a] - [[&ref(http://webdoramamuseum.s1003.xrea.com/common/img/download/dl_icon.gif,left,nolink,18x18,dorama-pdx.cgi);dorama-pdx.cgi:http://webdoramamuseum.s1003.xrea.com/common/cgi-bin/file/perldnload.cgi?dlfile=http://webdoramamuseum.s1003.xrea.com/common/file/dorama-pdx_cgi.txt&dlname=dorama-pdx_cgi.txt]]~ (このサンプルは、当サイトでの使用例です。プログラムのファイル名はindex.cgiに変更しています。) #!/usr/local/bin/perl #| WeB DoRaMa for pdx ver 1.0 #| #| typea (2000/3/8) #| HomePageUrl http://www.digimaga.com/p/ ####### Special thanks. ###### #| WeB DoRaMa Version 1.25+ #| This script is free. #| #| Author Shigeto Nakazawa.(1996/11/27) #| HomePageUrl http://www7.big.or.jp/~jawa/ #| #| Special Thanks おかぴ #| HomePgaeUrl http://www.mediawars.or.jp/~okapin/ # ////////////////////////////////////////////////////////// # オプションの設定を変更することができます。 # 変更する場合は、readme.htm をご覧になってから行ってください。 # 設定変更には充分注意してください。 # ////////////////////////////////////////////////////////// # ---------------------------------------------------------- # ドラマのカスタマイズ項目です。 # ---------------------------------------------------------- $max = 150; # 登録・表示最大数(あまりに多いと危険) $view = 20; # 初期画面で表示する数 $title = 'WeB DoRaMa'; # タイトル # このプログラムの設置URL $url = '//www.digimaga.com/p/dorama/index.cgi'; # ONCのトップページ(「戻る」の戻り先) $back_url = '//www.digimaga.com/p/'; # ONCの切断ページ $desc_url = '//www.digimaga.com/p/onc/desc.txt'; $actors[1] = 'だいすけ'; # ' ' の中だけを書き換え、 $actors[2] = 'ゆうこ'; # それ以外の記号は $actors[3] = 'けんじ'; # 絶対に消したりしないこと! $actors[4] = 'えり'; $actors[5] = '効果音'; $actors[6] = 'ナレーション'; # year:年 mon:月 day:日 hour:時 min:分 sec:秒 $date = "mon/day hour:min"; # 一桁のとき二桁に修正するか? # 0:しない 1:する(時分秒) 2:する(全て) $date_type = 2; # IPアドレスの表示 (0:表示しない 1:表示する) $ip_check = 0; # リモートホストの表示 (0:表示しない 1:表示する) $rh_check = 0; # ファイル関連の設定 $logfile = './dorama.log'; # 記録用ファイル $lock1 = './dorama1.lock'; # 鍵ファイル(1) $lock2 = './dorama2.lock'; # 鍵ファイル(2) $lock_flag = 1; # 鍵ファイルの 1:使用 0:不使用 # ////////////////////////////////////////////////////////// # オプションの設定はここまでです。 # 以下は CGI のプログラムです。 # 書き換えは個人の責任で行って下さい。 # ////////////////////////////////////////////////////////// &read_form; # pdxturn = 1 if($FORM{'pdxturn'} == 1){ @logs = &read_file($logfile); &sel_dorama; print<<"_EOF_"; Content-Type: text/plain From: $url?no=$no Content-Type: Text/X-PmailDX <SEL=19;$back_url> <SEL=20;$desc_url> 今ストーリーはこうなっています。 -------------- _EOF_ &html_dorama($view-1,0); print "--------------\n"; print "①"; print "$actors[1]\n"; print "②$actors[2]\n"; print "③$actors[3]\n"; print "④$actors[4]\n"; print "⑤$actors[5]\n"; print "⑥$actors[6]\n"; print "発言したい登場人物の番号を入力して下さい。\n"; print "⑲戻る\n"; print "⑳終了\n"; print "--------------\n"; print "Jawa,typea\n"; exit; } # pdxturn = 2 if($FORM{'pdxturn'} == 2){ print<<"_EOF_"; Content-Type: text/plain From: $url?actor=$FORM{'pdxdata'}&no=$FORM{'no'} Content-Type: Text/X-PmailDX <SEL=19;$back_url> <SEL=20;$desc_url> $actors[$FORM{'pdxdata'}]の セリフを入力して下さい。 注意:改行は入力されません。 100文字以上も入力されません。 ⑲戻る ⑳終了 -------------- Jawa,typea _EOF_ exit; } #pdxturn = 3 if($FORM{'pdxturn'} == 3){ @logs = &read_file($logfile); print<<"_EOF_"; Content-Type: text/plain From: $back_url Content-Type: Text/X-PmailDX <SEL=20;$desc_url> _EOF_ &form_check; &get_date; $no = ($FORM{'no'} + 1) % 9999; $ipad = $FORM{'pdxfrom'}; $rhost = $ENV{'REMOTE_HOST'}; unshift(@logs,"$no<>$date<>$FORM{'pdxdata'}<>$FORM{'actor'}<>$rhost<>$ipad\n"); while (@logs>$max) { pop(@logs); } &html_dorama($view-1,0); &write_file($logfile,@logs); print<<"_EOF_"; -------------- 2回続けて書き込みできません。 また来てくださいね。 ⑲戻る ⑳終了 -------------- Jawa,typea _EOF_ exit; } # pdxturn > 3 print<<"_EOF_"; Content-Type: text/plain From: $back_url Content-Type: Text/X-PmailDX <SEL=19;$back_url> <SEL=20;$desc_url> _EOF_ &error(0,"入力がおかしいか、バグです。"); ###### subroutin ###### # [ $no出力 ] # sub sel_dorama { local($view,$flag) = @_; ($no,$date,$dorama,$actor,$rhost,$ipad) = split(/<>/,$logs[0]); } # [ ドラマ出力 ] # sub html_dorama { local($view,$flag) = @_; for ($i=$view;$i>-1;$i--) { ($no,$date,$dorama,$actor,$rhost,$ipad) = split(/<>/,$logs[$i]); print "[$no]$actors[$actor]\n"; if ($flag) { print "$date\n"; } print "「$dorama」"; if ($rh_check || $ip_check) { print " ["; if ($rh_check) { print $rhost; } print " "; if ($ip_check) { print $ipad; } print "]"; } if (!$flag) { print "\n"; } } } # [ 日付取得 ] # sub get_date { $ENV{'TZ'} = "JST-9"; # TimeZone (日本時間 = 国際標準時(JST) - 9時間) local($sec,$min,$hour,$day,$mon,$year) = localtime(); $mon++; if ($date_type) { if ($sec < 10) { $sec = "0$sec"; } # 秒の修正 if ($min < 10) { $min = "0$min"; } # 分 〃 if ($hour < 10) { $hour = "0$hour"; } # 時 〃 if ($date_type > 1) { if ($mon < 10) { $mon = "0$mon"; } # 月 〃 if ($day < 10) { $day = "0$day"; } # 日 〃 } } if ($year > 99) { $year = $year - 100; } $date =~ s/year/$year/ig; $date =~ s/mon/$mon/ig; $date =~ s/day/$day/ig; $date =~ s/hour/$hour/ig; $date =~ s/min/$min/ig; $date =~ s/sec/$sec/ig; } # [ フォームチェック ] # sub form_check { local($ck_no,$date,$dorama,$ck_actor,$rhost,$ipa2) = split(/<>/,$logs[0]); chomp $ipa2; if ($ck_no ne $FORM{'no'}) { &error(0,"タイムオーバーだよ、きみぃ。もう、誰かが執筆しちゃったみたいだよ。一度戻って、再読み込みするといいだろう。"); } if ($ck_actor == $FORM{'actor'}) { &error(0,"同じ人がセリフを言うのは駄目だよ。"); } if (!$actors[$FORM{'actor'}]) { &error(0,"セリフを言う人を選ばないといけないなぁ。"); } if (!$FORM{'pdxdata'} || length($FORM{'pdxdata'}) > 300) { &error(0,"そんなセリフは認められないなぁ。"); } # 独自に機能を追加しています。 # 下のコメントをはずした場合、同じ人が二度続けて書き込み出来ません。 # if ($ipa2 eq $FORM{'pdxfrom'}) { # &error(0,"2回続けて書き込みできません。"); # } } # [ フォームからデータ取得 ] # sub read_form { local($pair,$buffer); $buffer = $ENV{'QUERY_STRING'}; $buffer =~ s/%0d%0a//g; local(@pairs) = split(/&/,$buffer); foreach (@pairs) { local($name,$value) = split(/=/,$_); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; # $FORM{$name} = &change_code($value); $FORM{$name} = $value; } } # [ 記録ファイルの処理 ] # sub read_file { local($logfile) = $_[0]; if (!open(IN,$logfile)) { &unlock_file; &error(1,"記録ファイルの読み込み不可"); } local(@files) = <IN>; close(IN); return @files; } sub write_file { local($logfile,@lines) = @_; &lock_file($lock1);&lock_file($lock2); if ($lock_error) { &error(1,"ロックファイルを検出しました。時間をおいてご利用下さい。"); } if (!open(OUT,">$logfile")) { &unlock_file; &error(1,"記録ファイルの書き込み不可"); } print OUT @lines; close(OUT); &unlock_file($lock2);&unlock_file($lock1); return @lines; } # [ ロック機構 ] # sub lock_file { local($lockfile) = $_[0]; if (!$lock_flag) { return 1; } local($retry) = 5; while (-f $lockfile) { if ($retry-- <= 0) { local($mtime) = (stat($lockfile))[9]; if ($mtime < time()-60*15) { &unlock_file($lockfile); } $lock_error = 1; return 1; } sleep 1; } open (LOCK,">$lockfile"); close(LOCK); return 1; } sub unlock_file { local($lockfile) = $_[0]; unlink($lockfile); } # [ エラー処理 ] # sub error { print<<"_EOF_"; $_[1] ⑲戻る ⑳終了 -------------- Jawa,typea _EOF_ exit; } ** 最後に [#g87b1317] WeB DoRaMa for PDXの改造、再配布などは自由ですが、大元のWeB DoRaMaの著作権はじゃわさんが保持します。~ また、WeB DoRaMa for PDXの移植にご了解をいただけましたじゃわさんに、感謝です。~ WeB DoRaMa for PDXで不明な点があった場合は、くれぐれもじゃわさんに直接質問されないようにお願いします。~ ~ オープンネットコンテンツそのものの終了により当ドラマは利用できませんので悪しからず。 * 関連ページ [#s9595c02] #related
テキスト整形のルールを表示する
警告:くれぐれもまとめサイトに転載・記載するのだけはおやめください。