Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^2: Iterator to parse multiline string with \\n terminator

by three18ti (Scribe)
on Oct 06, 2013 at 09:16 UTC ( #1057133=note: print w/ replies, xml ) Need Help??


in reply to Re: Iterator to parse multiline string with \\n terminator
in thread Iterator to parse multiline string with \\n terminator

Neat! Thanks for the link.

I've been reading Higher Order Perl and was just reading the chapter on Lexers where MJD makes use of look-behind assertions. This actually helps make more sense of what I was reading.

What is the difference between next and redo in this context? A user below had a similar solution but used redo instead of next.


Comment on Re^2: Iterator to parse multiline string with \\n terminator
Re^3: Iterator to parse multiline string with \\n terminator
by smls (Friar) on Oct 06, 2013 at 11:47 UTC

    The difference is that redo does not re-evaluate the loop condition (in this case: "(<DATA>)", which fetches the next line) before evaluating the loop body again, whereas next does.

    This is why in jwkrahn's solution, the next line is fetched manually before calling redo:

    $_ .= <$fh>;

    The advantage of jwkrahn's solution with redo, is that the implicit variable $_ can be used to store the complete multiline record.

    The advantage of kcott's solution with next, is that there is only one place where the <> operator for fetching the next line is used (inside the loop condition) - but re-evaluating the the loop condition also resets $_, so in this case a custom variable needs to be declared above the loop to store the current record.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1057133]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (11)
As of 2014-07-29 06:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (211 votes), past polls