in reply to Re: Print 4 Lines below matching criteria
in thread Print 4 Lines below matching criteria

I didn't realize those readline calls would be in scalar context there. How interesting. Very nice!

Update: I wrote a bad test case at nearly 11 pm. Sorry for the confusion!

  • Comment on Re^2: Print 4 Lines below matching criteria

Replies are listed 'Best First'.
Re^3: Print 4 Lines below matching criteria
by jwkrahn (Abbot) on Nov 16, 2006 at 07:53 UTC
    They are not in scalar context. To be in scalar context you would need to do:

    my ( $city, $phone, $street, $zip ) = ( scalar <DATA>, scalar <DATA>, +scalar <DATA>, scalar <DATA> );

      Or the slightly cleaner

      my ( $city, $phone, $street, $zip ) = map scalar <DATA>, 1 .. 4;

      Or the somewhat obscure but useful:

      chomp( my ( $city, $phone, $street, $zip ) = map scalar <DATA>, 1 .. 4 + );

      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.
      "They are not in scalar context."

      You are absolutely correct!
      And this is the part where I need to put my hand up and admit that I have "cargo-culted" this technique without really taking the time to work out what was really going on.

      I first saw this technique used in some code written by a co-worker some years ago. It was basically used to read a fixed number of lines from a very small configuration file. I adopted it and have used it from time to time to do the same thing. Fortunately, I've never been bitten because I've never used it in a loop to retrieve multiple "sets".

      My apologies to the OP, and thanks for pointing this out.

      Cheers,
      Darren