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.
In reply to Re: Re: The easiest way to substitute a part of the content of a file.
by eg
in thread The easiest way to substitute a part of the content of a file.
by MF
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |