Sure, if you just want to catch an error, eval is what you want. My point is that if you're reaching for $SIG{__DIE__}, you're almost certainly doing something wrong. For example, if you want to create resumable exceptions or drop into the debugger before unwinding the stack on a die, CORE::GLOBAL::DIE is what you want.