STARTING OVER日記。
2008年04月13日(日)
くじびき。
くじびきCGIを少々見直し。
冗長な部分を整理しました。
ベースは以下のような感じになりましたとさ。
#!/usr/local/bin/perl
$self = $ENV{ 'SCRIPT_NAME' };
$title = "ラッキーソ\ングおみくじ";
$setsu = " 本日のラッキーソ\ングは";
# 結果のCSS
$result_css = "font-size:18px;font-weight:bold;";
#データファイル
$file = './title.dat';
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }
print "Content-type: text/html\n\n";
print <<"EOF";
<html>
<head>
<title>$title</title>
</head>
<body>
<h1>$title</h1>
EOF
if ( $buffer eq "" ) {
print <<"EOF";
<h2>くじをひきましょう。</h2>
<p> 下の[Click!]を押して下さい。</p>
<form method="post" action="$self">
<input type="submit" name="submit" value=" Click! ">
</form>
EOF
}
else {
if (!open(IN,"$file")) { &error('データベース読取エラー','復旧をお待ちください.'); }
local(@BASE) = <IN>;
close(IN);
$dat_num = @BASE;
# 乱数を発生
&rand;
print <<"EOF";
<h2>くじをひきました。</h2>
<p>$setsu</p>
<p style="$result_css">$kuji</p>
<p>です。</p>
<p> もう一度引き直す場合は<a href="$self">最初に戻って</a>下さい。</p>
EOF
}
print <<"EOF";
</body>
</html>
EOF
exit;
# 乱数を発生させるサブルーチン
sub rand {
srand;
$x = int(rand($dat_num));
$kuji = $BASE[$x];
}
実際はスタイルシートとか見た目部分をいじっているのでこの通りではないですが。
あ、title.datには歌のタイトルを羅列で。
(1行1タイトル。)
※ファイル名はこの通りではありません、念のため。
ラストのほうの「srand」はperlのバージョンによっては要らないっぽいですが、一応ね。
カテゴリー: びくでんオリジナルCGI作成