http://www.perlmonks.org?node_id=1025694


in reply to Re^3: <> oddity ?
in thread <> oddity ?

Just to clarify:

wishing to deal with various use modes in a perfectly similar manner, I wanted to have 3 distinct modes of calling the program behaving absolutely similar, with minimum fuss about that in the code:

$ test.pl sample.txt sample1.txt ... sampleN.txt
$ test.pl <sample.txt
$ cat sample.txt sample1.txt ... sampleN.txt | test.pl

All is well with this with the use of <>, except the fact that once EOF is seen, no further attempt to read from <> is allowed - or STDIN is opened, and will wait forever if you're unaware of it...

Thanks you helping to sort this out.

UPDATE As perlop says in 'I/O Operators':

The <> symbol will return "undef" for end-of-file only once. If you call it again after this, it will assume you are processing another @ARGV list, and if you haven't set @ARGV, will read input from STDIN.

Now I know :)