my $lines = join "", <DATA>; $lines =~ s/\n\n=/=/gm; print $lines; __DATA__ line 1 ====== line after break line
Produces:
line 1====== line after break line
That's what I'd expect, but maybe it's not what you wanted.
If you want to remove a blank line before the marker, do s/\n\n=/\n=/gm. Then the output is:
line 1 ====== line after break line
You can do s/\n=/=/gm (which sounds like what you describe), but that will produce output like the first output when there's no blank line before the marker.
As an aside, you can avoid reading in the whole file by setting the input record separator.
$/ = '='; while (<DATA>) { s/\n\n=/\n=/m; print; } __DATA__ line 1 ====== line after break line
Produces...
line 1 ====== line after break line
See perlvar for info about $/ (aka $INPUT_RECORD_SEPARATOR if you use English).
In reply to Re: Why does my Perl regex substitution for linebreak fail?
by kyle
in thread Why does my Perl regex substitution for linebreak fail?
by pat_mc
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |