|Do you know where your variables are?|
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 :)