use Error qw(:try);
use Error::File; # This is something you write
use IO::File;
# Stuff here ...
my $fh = try {
IO::File->new($filename) || throw Error::File -text => $!;
} catch Error::File with {
my $err = shift;
die "Cannot open file\n";
};
Obviously, you would put more around this. I even have a File.pm where I have an Open() function. That will handle more common things, like filetest operators and filename checks and throw useful error messages. Of course, my errors are specific to my needs. YMMV
------
We are the carpenters and bricklayers of the Information Age.
Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.
Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.