Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^2: A refactoring trap

by Caron (Friar)
on Aug 17, 2005 at 07:53 UTC ( #484332=note: print w/ replies, xml ) Need Help??


in reply to Re: A refactoring trap
in thread A refactoring trap

The second while however, will stop as soon as it finds an empty line

Just to test your assertion:

while (my $line = <DATA>) {print $line}; __DATA__ one two three four

results in

one

two
three

four

It seems that empty lines don't break the loop at all.


Comment on Re^2: A refactoring trap
Download Code
Re^3: A refactoring trap
by redlemon (Hermit) on Aug 17, 2005 at 08:14 UTC

    Hmmm, you're right. It doesn't break.

    The reason is that blank lines are not truely blank, of course. You're saved by the fact that a blank line still contains the "\n".

    --
    Lyon

      No it still works with chomp:
      while(chomp (my $line = <DATA>)){
      At least with newer perl versions. Tried with perl5.8.6.
        With this method you'll never be able to loop through the last line.
        No it still works with chomp

        To understand why this works, take a look at the return value for chomp. Hint: it's not the string with newlines missing.

        The problem with while (my $line = <DATA>) {} is real, it's just obscure. As hinted, it only happens when you get a line with a false value and no newline. Sometimes this happens at the end of a file. Sometimes it happens for other reasons. It usually doesn't cause any actual problems, but certainly is something to look out for.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://484332]
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: (10)
As of 2014-12-18 05:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (42 votes), past polls