Yes of course there is a way. Try this:
open FILE, "<whatever.txt" or die "Oops $!\n"; my @content = <FILE>; close FILE; for my $i ( 0 .. $#content -1 ) { $content[$i] = $some_edit if $content[$i+1] eq $some_next_line_bit +; } open FILE, ">whatever.txt" or die "Oops $!\n"; print FILE @content; close FILE;
There are plenty of other ways to do it. You could revise the code above using the +< operator to open the file for R/W and use a seek FILE, 0, 0 to reset the pointer for the write to save a couple of lines. If the file is huge you could use a while loop and temp file thusly:
my $last = ''; open FILE, "<whatever.txt" or die "Oops $!\n"; open TMP, ">tmp.txt" or die "Oops $!\n"; while (<FILE>) { $last =~ s/this/that/ if $_ eq $some_next_line_bit; print TMP $last; $last = $_; } print TMP $last; # print the very last line close FILE; close TMP; rename "tmp.txt", "whatever.txt"; unlink "tmp.txt";
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
In reply to Re: edit text
by tachyon
in thread edit text
by polr
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |