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

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> );

Replies are listed 'Best First'.
Re^4: Print 4 Lines below matching criteria
by BrowserUk (Patriarch) on Nov 16, 2006 at 08:37 UTC

    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.
Re^4: Print 4 Lines below matching criteria
by McDarren (Abbot) on Nov 16, 2006 at 08:19 UTC
    "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