in reply to Eval not catching Dies

I belive you're tricked by perl 5.8's delayed signal mechanism. The signal actions are only carried out between execing perl opcodes. The <STDIN> reading restarts after the signal, and your $SIG{} functions are only executed after the readline's finished.

(But I'm not quite sure.)