Actually, a bit further evaluation seems to indicate the problem is coming from either die() or warn(), which in turn call id() which causes the splitpath error. However, looking at confess(), it's just a wrapper for calling die so it may be in there. Since there were several instances of confess being called, I added the following subroutine to the package where I think the error may be coming:
sub confess { Carp::confess @_ }
Still got the splitpath error from CGI::Carp. I then manually switched confess to Carp::confess. Still no dice. I'm not entirely sure where this warning is being called from since the code being eval'ed includes objects from several other packages. I've tried adding use Carp; to all the relevant packages, but CGI::Carp continues to be called. I've tried tracking down the error in the debugger, but I can't seem to track into the eval. I'm guessing that's not possible via the debugger.
I'm in the process of running other tests to try to track down where the warn/die is being called. Unfortunately, I'm having a hard time repeating the error in slimmed-down versions of my code. The crux of the problem seems to be that CGI::Carp does not work inside of Safe. I need to send a bug report to Lincoln.
Thanks for your input,
William
|