sub try (&@) { my($code, $error_handler) = @_; eval { $code->(); }; $error_handler->() if $@; } sub catch (&) { return @_; } #### my $msg; try { open (FILE, "strangefilename") || die "$!"; $msg = ; } catch { print "File could not be opened because of: $@\n"; $msg = "BAAAAH"; }