□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■ ------------------ CGI・3分クッキング ---------------------(^○^)~~ 発行日:1999年7月23日 毎週火曜と金曜発行 Vol.【006】 ●PR●━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ コスモ ザ カードをネットから申込むとガソリン10円引き!(100Lまで) さらにF1ツアーやMTBなど300名に豪華プレゼントも! click< http://a.clickincome.net/md/dk?mid=0f6b81b19174a901485ef78e1bfe873d > ⇔⇔Web新撰組News http://www.web-kyoto.com/ ⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔ 「CGIスクリプターへの道Vol.16」が久しぶりに出ました。 鷹やっと復活か!? 「燃えるUNIX道」もなんとか創刊。 更に新しいメルマガの企画も・・・ 今すぐ http://www.web-kyoto.com/dp/ へGO! ⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔⇔ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━●PR● □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■ 【今日の献立:娯楽の殿堂其之四】==========================================   今回はデータの足し算と引き算を行います。   さて、娯楽の殿堂のデータは、こんな形式でした。 はぎちゃん:10000 もたえ:-10000 鷹:20   これを読み込むのは、 #データを読み込むサブルーチン sub ReadData { open(IN,"$DataFile"); @Lines=; close(IN); }   こんな感じです。ただ単にデータを@Linesという名前の配列に放り込んでいる だけです。   この@Linesに入っているデータのうち特定の人だけを選び出して、その点数を 加算(又は減算)してやります。   フォームからは、という行で 名前が送られてきていますので、これをキーにしてデータをふるいにかけます。 foreach $line (@Lines) { chop($line); ($key,$point) = split(/:/,$line); if($key eq $FORM{'name'}){ if($FORM{'action'} eq "push"){ $point++; }elsif($FORM{'action'} eq "pull"){ $point--; } push(@newlines,join(':',$key,$point)); }else{ push(@newlines,$line); } }   となります。 foreach $line (@Lines) { ................ }   は、配列@Linesの値を順に$lineに代入して、@Lines配列の値の数だけ{から}の間 を実行する、という意味です。 push(@newline,$line);   は、新しい配列@newlineに$lineを入れていきます。 join(':',$key,$point)というのはsplitの反対で、:を区切りにして$leyと$pointを くっつけます。   で、娯楽の殿堂はこんな感じになりました。 hanarakkyo.cgi(0.05) #!/usr/local/bin/perl $CgiName="./hanarakkyo.cgi"; $DataFile="./kacchoii.data"; &get_formdata; &ReadData; if(!$FORM{'action'}){ $FORM{'action'}="showhtml"; } foreach $line (@Lines) { chop($line); ($key,$point) = split(/:/,$line); if($key eq $FORM{'name'}){ if($FORM{'action'} eq "push"){ $point++; }elsif($FORM{'action'} eq "pull"){ $point--; } push(@newlines,join(':',$key,$point)); }else{ push(@newlines,$line); } } if($FORM{'action'} ne "showhtml"){ &WriteData(@newlines); } &ShowHtml; exit; #データを読み込むサブルーチン sub ReadData {   (この内容は前回と一緒) } #データを書き込むサブルーチン sub WriteData {     (この内容は前回と一緒) } #フォームからデータを得るサブルーチン sub get_formdata {   (この内容は前回と一緒) } # html表示のサブルーチン sub ShowHtml {   (この内容は前回と一緒) }   これで完成。ちゃんと動きます。が。。。。   ひとつだけ不満があります。それは、データファイルを一度全部読み 込んで、計算した後書き込みますが、その後、表示の為にもう一度ファイル を開いています。   これは無駄ですね。   次回は、この辺りを修正して、娯楽の殿堂を完成させます。 ===============================================================【続く】 ---------------------------------------------------------------------- このメールマガジンは、 Subject部が、CGI3分クッキング【Vol.番号】は、まぐまぐ様にて、 ( http://www.mag2.com/ ) Subject部が、CGI3分クッキング Vol.【番号】は、Macky様にて、 ( http://macky.nifty.ne.jp/ ) Subject部が、CGI3分クッキング番号 は、Pubzine様にて、 配布致しています。 メールマガジンの解除について まぐまぐ様の解除は、 http://www.web-kyoto.com/dp/3min/ に、削除及び登録フォームを用意致しております。 Macky様の解除は、 http://macky.nifty.ne.jp/ を参考して下さい。 Pubzine様の解除は、 http://www.pubzine.com/srchid.asp?keyword=1379 に、削除及び登録フォームを用意致しております。 ---------------------------------------------------------------------- (^○^)/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 【お願い】 このマガジンについてのお問い合わせは、WEB新撰組メーリングリストで、 お願い致します。 参加方法は、 http://www.web-kyoto.com/ml/ を参考にして下さい。 はぎちゃんに対する質問・苦情は、このメールマガジンのリプライでどうぞ。 麗しいお嬢様の愛情は個人的に大歓迎ですが、アニキの愛情は勘弁して下さい。 【今回の担当】 WEB新撰組CGIプログラマー はぎちゃん(萩原 逸郎)でした。                 監修 組長(津田 羊子)&鷹(津田 貴史) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\(^○^)