I hate to say it, but ... Duh! :) $@ was provided for a reson. I personally don't like to assume that a "standard" return value will work if "The Powers That Be"(tm) have provided another method of checking success. Things like
eval and $@ are a perfect example.
It's good of you to post it, though. I never knew about eval returning undef if it failed. :)