in reply to Re^2: IO::Handles ... any good?
in thread IO::Handles ... any good?

so you should either enclose the assignment in parentheses:

Why? The intention is to check $ARGV[0], so || is perfectly acceptable.

There's is a problem with both your solution and your parent's: It won't work for a file named "0". The following will, however:

my ($file) = @ARGV or die(...);