I never use the while (<>) {} construct. Instead I always use a explicit open, mostly along with a Getopt module. Then I can throw errors with my own error messages and parse additional flags conveniently.
holli, /regexed monk/
Comment on Re: How would you do it? Re ARGV, fundamentally!
It all depends on your target application. For some classes of applications while (<>) {} is great. Occasionally I have even filled @ARGV manually to exploit it.