http://qs1969.pair.com?node_id=537506


in reply to Re: eval {require module};?
in thread eval {require module};?

Many months later I now know how eval{} can fail and yet not set $@. It happens if a DESTROY method called during the stack-unwind also does an eval.
use AtExit; eval { my $q = AtExit->new(sub{eval{}}); die "Oops\n"; }; print $@; # Prints nothing