CGI-BBS > CGI > Perl > cgiの設置でファイルの中身を書き換えしたい。


カレッヂ
カレッヂ


質問者 さや  投稿日 2005/6/24(金) 00:04:35
ファイルの処理なんですが…、力をお貸し下さい。

ファイルの処理についてなのですが…。

個人データを一行ずつまとめて保存しているのですが…、個人データの一部を
書き換えたいのですが、処理の仕方がわかりません…。
どうかお力をお貸し下さい、宜しくお願い致します。

ファイルの中身↓

登録者A:ID:pass:dataA:dataB:dataC
登録者B:ID:pass:dataA:dataB:dataC
登録者C:ID:pass:dataA:dataB:dataC
登録者…etc。
……
…


…となっておりますが、dataA,B,Cの方を常時書き換えをしたいのですが処理の方法
が思うようにいきません…。

【習熟度】多少の設置経験

回答者 ひろ  [削除]  投稿日 2005/6/24(金) 08:30:24
ファイルの一部を書き換える場合
ファイルから一旦、全部のデータを読み込み
プログラム内で該当データの変更、その後すべてのデータを再保存するといった手順になります。


例えば 登録者B のデータを dataD,dataE,dataF に変更する


TEST.txt
---------
登録者A:ID:pass:dataA:dataB:dataC
登録者B:ID:pass:dataA:dataB:dataC
登録者C:ID:pass:dataA:dataB:dataC
---------

open(IN, '<TEXT.txt') or die $!;
my @data = <IN>;
close F;

my $user = '登録者B';

for (@data) {
  chomp
  @d = split(/:/, $_);
  if ($d[0] eq $user) { $_ = join(':', $d[0], $d[1], $d[2], 'dataD', 'dataE', 'dataF'); }
}

open(OUT, '>TEXT.txt');
print OUT join("\n", @data);
close OUT;

質問者 さえ  [削除]  投稿日 2005/6/25(土) 02:43:50
返事が遅くなりスミマセン。

ひろ様、迅速な返答ありがとうございます。

先ほど試してみたのですが、理想の処理をする事が出来ましたっ!
joinの関数はただ繋げるだけと思っていましたがこういう使い方もあるのですねっ!

ひろ様、有難うございましたっ!

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


Web裏技