in reply to trapping signals

Quoth the Camel:
When a __DIE__ hook routine returns, exception processing continues as it would have in the absence of the hook, unless the hook routine itself exits via goto, a loop exit, or a die.

So, the die will still terminate your program. What are you trying to do with this? Quoth the Larry again:
Do not attempt to build an exception-handling mechanism on this feature. Use eval {} to trap exceptions instead.