in reply to Why does my Perl regex substitution for linebreak fail?
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).
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Why does my Perl regex substitution for linebreak fail?
by ikegami (Patriarch) on Mar 06, 2008 at 02:55 UTC | |
|
Re^2: Why does my Perl regex substitution for linebreak fail?
by ack (Deacon) on Mar 06, 2008 at 03:43 UTC | |
|
Re^2: Why does my Perl regex substitution for linebreak fail?
by pat_mc (Pilgrim) on Mar 06, 2008 at 09:10 UTC |