In list context the file input operator (<...>) reads an entire file, stopping when it reaches EOF (end of file). Typical file handling does not equate "newline" (\n) to indicate EOF. By wrapping $input in parenthesis, you are implying to Perl that the item on the lefthand side of the = assignment operator is a list. That puts <STDIN> into list context, so the entire file is slurped in.

But what is the entire file, when dealing with a terminal? Under linux environments one can inject an EOF in terminal input by hitting ctrl-D. This may vary by operating system.

If your line was this instead:

my $input = <STDIN>;

...then the righthand side of the assignment is cast in scalar context. In scalar context, the <> operator reads a single record. Unless it's been changed elsewhere in the program, the record separator is newline. So when you type something and hit enter, you effectively send one record through STDIN to $input.


Dave


In reply to Input problem with Enter key... by davido
in thread Input problem with Enter key... by PriNet

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.