You may not be familiar with other languages like C++ or Java. However, in the off-chance that you are (or someone else reading this thread):
die is to throw as
eval { ... } is to try { ... }
After an eval block, you can inspect
$@ to see if the task died. As others have mentioned,
$SIG{__DIE__} is only for putting in a hook for the last gasp of the process, when the die had no other eval blocks to catch it. By that point, there's no "saving" the process.
--
[ e d @ h a l l e y . c c ]