Anette Seiler wrote: > > Hi Ken, > > I encountered exactly the same problem today: How to read a file > AND change something in it? I was not able to do both of them at > the same time. > > I am sure there is a more correct way to do it, but my solution (in > the spirit of TIMTOWTDI) was to write to a temporary file and then > rename the temporary file to the name of the original file, like: > > open FILE, "original.txt" or die "Cannot open file original.txt ($!)\n"; > open TEMP, ">temp.txt" or die "Cannot open file temp.txt ($!)\n"; > > foreach my $line (<FILE>){ > $line =~ s/find/replace/gi ; > print TEMP "$line\n"; > } > > close FILE; > close TEMP; > > rename "temp.txt", "original.txt; >
do it with perl -pi -e 's/find/replace/gi;' original.txt note that you'll lose the file if you do a mistake, perl -pibak -e 's/find/replace/gi;' original.txt will create a backup file look at 'perldoc perlrun' /jon > It works, but as I say, I am sure, this is not the best way to do it. > Therefore, I am just as curious as you, what the experts will tell us. > > By the way, dear experts, I am really grateful for the time and effort > you spend helping us newbies. I learned a lot since I subscribed to > the list. Thank you! > > Greetings from a sunny Cologne, Germany > > Anette > > > Hi, > > > > I have a file with say the value "02" in it. > > > > I can open the file, lock the file, read the value, increment the > > value and do a write but the write always appends and never > > over-writes the exisitng value. I of course then unlock and close. > > > > I do a seek before the write to the beginning of the file, even > > checked with "tell" and it returns "0",but the following print or > > syswrite always appends. > > > > Why? How do I over-write? > > > > Thanks > > > > Ken > > > > -- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]