in reply to trapping signals

That's not what sig{DIE} handlers are for - you should only use them to do cleanup. use block eval for catching normal exceptions.