in reply to Input problem with Enter key...
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Input problem with Enter key...
by PriNet (Monk) on Nov 07, 2016 at 01:15 UTC | |
by davido (Cardinal) on Nov 07, 2016 at 02:00 UTC | |
by PriNet (Monk) on Nov 07, 2016 at 02:06 UTC | |
by kcott (Archbishop) on Nov 07, 2016 at 02:02 UTC | |
by PriNet (Monk) on Nov 07, 2016 at 02:11 UTC | |
by Marshall (Canon) on Nov 07, 2016 at 02:37 UTC | |
by PriNet (Monk) on Nov 07, 2016 at 02:45 UTC | |
| |
by ww (Archbishop) on Nov 07, 2016 at 12:18 UTC |