一見まともそうに大嘘書くなよ。
die は eval 中で挙動が変化するだけだぞ。
$SIG{__DIE__} でシグナルを掴まえて死ぬ前に特定挙動を
させる事が出来るが、基本的には eval 以外でトラップ
する事は出来んだろ。

eval { die "TRY:$!" };
if ( $@ ){ print "CATCH:$@" ;}

そもそも親関数って何だ?