What's a good way of opening a file as read-only, and failing if it doesn't exist? open() just returns a handle that's not obviously invalid, which strikes me as odd behaviour. At the moment I'm doing something like: open IN,"<$cfg"; if (eof IN) { die "bad config file $cfg\n"; } R