in reply to Re: The easiest way to substitute a part of the content of a file.
in thread The easiest way to substitute a part of the content of a file.
I like turnstep's editing the file in place, but it seems to me, if you're short on RAM, the best thing to do would be to rename the old file, open it to read and another to write.
rename $filename, $filename.".bak" or die "$!"; open(IN, $filename.".bak") or die "$!"; open(OUT, ">".$filename) or die "$!"; while (<IN>) { s/content/newcontent/g; print OUT; } close OUT; close IN;
Update
It sounds like the original poster is saying that "perl -p/n -i" won't work because this is a part of a larger program. Nevertheless, you make a good point tye. So I now propose:
open(IN, $filename) or die "$!"; open(OUT, ">".$filename.".new") or die "$!"; while (<IN>) { s/content/newcontent/g; print OUT; } close OUT; close IN; rename $filename.".new", $filename or die "$!";
You might even toss in a flock somewhere to try to guarantee exclusivity.
|
---|
Replies are listed 'Best First'. | |
---|---|
(tye)Re: The easiest way to substitute a part of the content of a file.
by tye (Sage) on Jan 03, 2001 at 07:04 UTC |
In Section
Seekers of Perl Wisdom