ファイル操作
[上に]
[前に]
[次に]
初心者
1999/08/22(日) 00:04:03
Perlでファイルから1レコードづつ読み込んで、
あるレコードを書き換えたいのですが
どのようにすれば書き換えられるかわかりません
申し訳ありませんが、教えて頂けないでしょうか?
きふね
1999/08/22(日) 02:17:11
open(IN, "$logfile");
@lines = <IN>;
close(IN);
$lines[数字] = $nanika;
@lines書き込み
でどうですか?
(意味取り違えてたらすみません)
ふじ
1999/08/22(日) 09:28:21
1レコード1行、というファイルなら、
open (IN, "< $logfile") or die $!;
open (OUT, "> $logfile.tmp") or die $!;
while(<IN>){
if(書き換えたいレコードなら){
print OUT 書き換えたデータ;
}else{
print OUT;
}
}
close IN;
close OUT;
rename $logfile , "$logfile.bak";
rename "$logfile.tmp" , $logfile;
とか。いったんテンポラリファイルに書き出して、リネームする。
ところで、サイズが大きくなる可能性のあるファイルに対して
> @lines = <IN>;
これはお勧めしません。
特定の一行を書き換えたい時にこうするのはメモリの無駄(余計な負荷)
でしかないので、注意しましょう。
きふね
1999/08/22(日) 10:55:53
なるほど、勉強になりました。(^^)
初心者
1999/08/22(日) 19:06:48
[[解決]]
きふねさん、ふじさん
ありがとうございました。
実現方法が分かりました。
勉強になりました。
[上に]
[前に]
[次に]