in reply to read ARGV ==> read on unopened filehandle

This behavior is actually well documented in perlfunc.

"Using eof() with empty parentheses is very different. It refers to the pseudo file formed from the files listed on the command line and accessed via the <> operator. Since <> isn't explicitly opened, as a normal filehandle is, an eof() before <> has been used will cause @ARGV to be examined to determine if input is available. Similarly, an eof() after <> has returned end-of-file will assume you are processing another @ARGV list, and if you haven't set @ARGV, will read input from STDIN;"

You can simply read ARGV by doing the following (if your file is line-by-line):

use strict; while (<>) { print; }