I seem to recall that it is not safe to trust the value of $@ after an eval. Something about a signal handler having a chance to set $@
$@
eval
The Try::Tiny docs have a pretty good list of eval/$@ shortcomings. I think you might be refering to the Localizing $@ silently masks errors section in there.