package MyDie; my $die_handle = \*STDOUT; sub mydie { my $message = shift; # If in eval block, throw exception ... $^S and die $message; # ... otherwise print message to handle and exit. print {$die_handle} $message, "exiting now\n"; exit 1; } 1; #### use MyDie; sub testfn { print "in testfn\n"; MyDie::mydie("whoops\n"); print "end testfn\n"; } eval { testfn() }; $@ and print "caught: '$@'\n"; testfn(); print "end test program\n";