You can use a variable to check whether you've made a match on the previous line or not, then reset it back to zero when you hit one (ie. printed the 2nd line). Note how the check for $match and the subsequent printing of the 2nd line is done before looking for $find and printing the first...
my $match = 0; while (<FILE>) { # get rid of newlines chomp; if ($match){ # we have a line to print; reset the counter $match = 0; # replace multi-spaces with a single one s/\s+/ /g; print NEW "$_\n"; } if (/$find/){ # we found a $find; set $match to true $match = 1; print NEW $_; } }
I'd recommend that you use lexical (variable-based) file handles instead of bareword handles though. BAREWORD handles are global, whereby variable based ones are lexical to the scope they're defined in, and can be passed around in subroutine calls:
open my $fh, '<', 'Report.txt' or die "can't open the damned Report.txt file!: $!";
In reply to Re^4: copy line with character
by stevieb
in thread copy line with character
by jalopez453
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |