CGI-BBS > データベース > 簡易データベース > データベースファイルの特定の行を指定して書き換えたい


カレッヂ
カレッヂ


質問者 ともたん  投稿日 2004/4/23(金) 20:05:51
簡易データベースを改造してリンク集を作っています。
登録されているサイトの、登録内容を変更する際、
サイトの情報が書き込まれている行のみを上書きしたいのですが
うまくいきません。書き込む時のスクリプトは以下のとうりです。
open(FILE, "+<$file") or &err1();
eval { flock(FILE, 2) };
seek(FILE,0,0);
print FILE "$data_now<>....
close (FILE);
eval{ flock(FILE, 8) };
どうしたらうまくいくでしょうか

プロバイダ参照:
サーバのOS:UNIXサーバ
パソコンのOS:WinNT系
エディタ:perlを始めよう!
FTPソフト:
サーバ移転:していない
改造:している 改造前正常動作
CGI習熟度:middle

回答者 sim  [削除]  投稿日 2004/4/26(月) 13:57:22
変更する行を参照して、その行を変更するという工程にしないとだと思います。

foreach(@NEW){
 if(変更する行だったら){push(@newlog,"更新後のデータ<>・・・\n");}
 else{push(@newlog,"$_");}
}
open(OUT,"> $file") || &err1('not writing');
print OUT @newlog;
close(OUT);

多分こんな感じの処理になると思います。
質問者 ともたん  [削除]  投稿日 2004/4/26(月) 20:04:51
sim様、いつもいつもありがとうございます。
おかげさまで、うまくいきました。
上書きする際に、文字列が余分に書き込まれること
があったのですが、書き込み処理の部分に、
print OUT @newlog;
truncate(OUT, tell(OUT));
とつけると余分な文字列がカットされて正常に
書き込まれました。
ありがとうございました。
また、わからないことがあった時は
よろしくお願いします。

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


Web裏技