Hello harangzsolt33,
Angle brackets around a filehandle are a special Perl construct for calling the built-in readline function, which (like most Perl functions) behaves differently according to the context in which it appears. From the documentation:
In scalar context, each call reads and returns the next line until end-of-file is reached, whereupon the subsequent call returns undef. In list context, reads until end-of-file is reached and returns a list of lines.
The line my $L = <STDIN>; supplies a scalar context, and so only one line is read since readline is called only once.
By contrast, the line print <STDIN>; supplies a list context (see print), so multiple lines may be read in by a single call.
Change your second example as follows: my @L = <STDIN>; print @L; and you will see the same behaviour as in the first example. On Windows (where ^Z signals end-of-file):
12:31 >perl -wE "my @L = <STDIN>; print @L;" abc def ghi ^Z abc def ghi 12:31 >
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
In reply to Re: Printing from stdin to stdout
by Athanasius
in thread Printing from stdin to stdout
by harangzsolt33
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |