in reply to Disable writing of eval'd errors to CGI log

What code is responsible for writing to the log? My guess is that it uses a construct based on $SIG{__DIE__}. If so, and the handler does make responsible use of the $^S variable to distinguish eval from a normal die, this is what happens. This is what "responsible" looks like:
$SIG{__DIE__} = sub { return if $^S; # inside eval # write to log: ... };

Either get a properly updated module containing the error handler/log writer, fix the module if it's one of your own, or temporarily clear $SIG{__DIE__} for the eval, like this:

{ local $SIG{__DIE__}; eval { # your code here ... }; } if($@) { # oops! ... }