in reply to eval bug?

Have you tried something like this:
eval { die "Uh oh, bad stuff happened." }; die $@ if $@; print "Phew. Bad stuff didn't happen.\n";
Perhaps if you posted the relevant section of your code we can take a closer look.