in reply to
Re: Capturing stack trace in eval
in thread Capturing stack trace in eval
You can override CORE::GLOBAL::die to throw an exception object
Yes, but it wouldn't work for Perl errors such as the one the OP wants to capture, "Can't use an undefined value as a symbol reference".
The only thing overriding CORE::GLOBAL::die won't catch is compile-time parser errors
It won't catch run-time errors or XS errors either. Perl and XS don't call die, a Perl-space function. They call C function croak (not the one from Carp). Therefore, it only catches user-thrown errors.