in reply to Re^4: Where did $@ go?
in thread Where did $@ go?

"If there was no error, $@ is guaranteed to be a null string."
Yeah, but it's useless, because the time frame where $@ is guaranteed to be a null string is less than the width of a semi-colon:

sub DESTROY {$@ = "Hi"} eval {bless []}; say $@; __END__ Hi!
No error, but between the finishing of the eval, and the first statement after the eval, the return value of eval is garbage collected, setting $@.