I've figured out that the destructor mangles $@Right. eval {} does two things: first, it catches exceptions and places them in $@, and second (and often overlooked) it clears $@ if there were no exceptions. So the do_something method was setting $@ and bailing out of the main eval {}, but as part of that bail out, $page was destroyed, and the destructor's eval {} was clearing the just-set $@.
In reply to Re: croak() does not "die" when DESTROY is used
by ysth
in thread croak() does not "die" when DESTROY is used
by telcontar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |