I heartily recommend
Log::log4perl*. It's a godsend. I use it to debug corba communication, which is in some ways similar to a mod_perl environment. You can turn logging levels (info, debug, warn, fatal) up or down from outside the code base, using a configuration file that follows log4j syntax.
Another helpful option is having a visual perl debugger (like
ActiveState's*) around that kicks in when the
-d flag is used.
Lastly, try to throw exceptions instead of errors - using something like
Exception::Class* which gives you stack traces to figure out the context of the problem.
* I am in no way affiliated with any of these.