CGI-BBS > CGI > Perl > Perlについてデータ書き込みを思い通りに書き込む事ができない。


カレッヂ
カレッヂ


質問者 チキチータ  投稿日 2004/6/27(日) 17:35:41
対戦表のCGIでデータの書き込みが上手くいきません。

ソース↓
http://zyandyoko.zive.net/cgi/upload/source/up0363.txt
データ書式↓
http://zyandyoko.zive.net/cgi/upload/source/up0364.txt

perl経験1ヶ月の初心者ですが、ご指導お願いします(><)

ooteai.cgi 755
jcord.pl 644
data.txt 666

#投稿データの処理サブルーチン
sub kiroku {
  open DATA,"data.txt";
  @all_data = <DATA>;
  while(<DATA>){
    $data = $_;
    chop $data;
    $wi = $FORM{'winner'};
    $los = $FORM{'looser'};
    ($fnum)=(split(/\,/,$data))[0];
    if($fnum == $wi){
      @winline = (split(/\,/,$data));
      $winline[$los]++;
      $data = join(',',@winline)
    }
    if($fnum == $los){
      @loseline = (split(/\,/,$data));
      $loseline[$wi + 30]++;
      $data = join(',',@loseline)
    }
    push @all_data,$data;
  }
  close DATA;
  open OUT,'> data.txt';
  foreach (@all_data){
    print OUT $_;
  }
  close OUT;
}

プロバイダ参照:http://zyandyoko.zive.net/index.htm
サーバのOS:WINサーバ
パソコンのOS:WinNT系
エディタ:
FTPソフト:
サーバ移転:していない
改造:(未選択)
CGI習熟度:middle

質問者 チキチータ  [削除]  投稿日 2004/6/27(日) 17:38:03
http://zyandyoko.zive.net/fordams/cgi-bin/ooteai.cgi
現在このように動作してます。(><)
回答者  [削除]  投稿日 2004/6/28(月) 04:29:48
書き込みがうまくいかないというのはどのように書き込ませたいのでしょうか。
回答者 dental  [削除]  投稿日 2004/6/28(月) 18:53:58
sub kiroku {
  open DATA,"data.txt";
  @all_data = <DATA>; ---(1)
  while(<DATA>){      ---(2)

少なくとも
(1)の時点でファイルハンドルが終端まで読み込まれているので
(2)以降の処理が無意味になっていると思います。

(1)の処理は必要あるのでしょうか。
回答者  [削除]  投稿日 2004/6/28(月) 19:19:14
push関数を使っているから、
@all_data = <DATA>;
を取れば思い通りになるのかも
質問者 チキチータ  [削除]  投稿日 2004/6/29(火) 00:13:09
出来ました!感動しました。
@all_data = <IN>を取ったのと、
print OUT $_;に
print OUT $_,"\n";と変更して
動作することが出来ました。
ありがとうございます!

そうでした
@all_data = <IN>
で最終行まで行ってしまうんでしたね、
すっかり忘れてました。

ありがとうございました(><)

このページは終了したので返信(回答)は書きこめません
 


Web裏技