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
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Iterator to parse multiline string with \\n terminator
by three18ti (Monk) on Oct 06, 2013 at 09:16 UTC | |
by smls (Friar) on Oct 06, 2013 at 11:47 UTC |
In Section
Seekers of Perl Wisdom