in reply to Re: What magic is this?
in thread What magic is this?

Yes, it is usually caught by the eval { } block which the author of XML::Parser deliberately put there, because the error was expected under certain circumstances and should be ignored. It is part of the design of the module.

You don't need to set the $^S you just want to check whether it is set in your die handler:

$SIG{__DIE__} = sub { if (! $^S ) { # Report the error } else { # Ignore the error as it came # came from inside an eval } };