http://www.perlmonks.org?node_id=1057125


in reply to Iterator to parse multiline string with \\n terminator

G'day three18ti,

In the absence of seeing a context requiring anything more complex, I'd probably code something along these lines:

#!/usr/bin/env perl use strict; use warnings; my $re = qr{^(.*)(?<![\\])[\\]\n$}; my $line = ''; while (<DATA>) { if (/$re/) { $line .= $1; next; } $line .= $_; print $line; $line = ''; } __DATA__ Line 1 Part A \ Line 1 Part B \ Line 1 Part C Line 2 ALL Line 3 Part X \ Line 3 Part Y Line 4 END WITH BACKSLASH \\ Line 5 LAST Z

Output:

Line 1 Part A Line 1 Part B Line 1 Part C Line 2 ALL Line 3 Part X Line 3 Part Y Line 4 END WITH BACKSLASH \\ Line 5 LAST Z

That code could easily be adapted for an iterator if one is required for your application.

If you're not familiar with negative look-behind assertions ((?<!pattern)), they're documented under Look-Around Assertions in "perlre: Extended Patterns".

-- Ken