in reply to $@ can't be relied on?

Easiest case where it doesn't work:
eval {local $@; die}; if ($@) {say "eval failed"} else {say "eval succeeded"} __END__ eval succeeded