ファイルの特定の箇所だけ書きかえるには?
[上に]
[前に]
[次に]
清4
1999/10/24(日) 03:51:56
PerlのCGIでの質問です。お願いします。
ファイルが例えば、
ドはドーナツ
レはレモン
ミはみんな
というのがあって、このうち2行目だけ書き換え、
ドはドーナツ
ファはファイト
ミはみんな
とかしたい場合、どうすればいいのでしょう?
seekかなんかではバイト数指定とありますし、
行で指定できる方法ありませんかね?
seea
1999/10/24(日) 06:13:30
全部読みこんでしまってから、行番号で指定して書き換えたのち
ファイル上書き、ではダメっすか?(^^;
巨大なファイルだと大変ですが seek()だと更に負荷が大きくなる
ことが多いです。
ふじ
1999/10/24(日) 10:19:58
何も全部読み込まなくても、
open IN, "< file";
open OUT, "> file.$$";
$line = 0;
while(<IN>){
$line ++;
if($line == 2){
print OUT, "この行は違うのよ";
}else{
print OUT $_;
}
}
close IN;
close OUT;
rename ("file", "file.bak");
rename ("file.$$", "file");
こうやって、一度別ファイルに書き出してからリネームすれば
よろしいのでは。
#巨大なファイルならなおさら。
清4
1999/10/24(日) 23:38:47
seeaさん、ふじさんありがとうございます。
勉強してみます。
[上に]
[前に]
[次に]