The version of mod_perl for apache2 in Sarge (libapache2-mod-perl2) is 1.999.21.
Only a short while after Sarge was released, mod_perl version 2.0 was released. Unfortunately, its behaviour changed in some significant ways, and the documentation on http://perl.apache.org/docs/2.0/ reflects this stable version. So if you are using Sarge and apache2 and mod_perl, you have some poorly documented features and mis-features. Wonderful. Instead, you can have hours of fun trying to figure everything out for yourself.
[error] [client x.x.x.x] Attempt to serve directory: /var/www/path/to/directory/
This version of mod_perl for apache2 screws up DirectoryIndex directives, since perl gets the request for the directory before mod_dir gets a chance. I suggest using mod_rewrite or a redirect instead.
See this thread for an explanation.
There is a fix you can do by loading your own handler into mod_perl for handling directories - this post in the above thread uses this solution.
This version (1.999.21) of mod_perl expects you to do
use Apache2;
and then the old style
use Apache::module;
much the way that mod_perl for apache1 did. This changed in mod_perl 2.0, so that there is no Apache2.pm any more, and you should just do
use Apache::module;
This means that you should do
PerlInitHandler Apache::Reload
in your apache config file, not
PerlInitHandler Apache2::Reload
as stated in perl.apache.org's online documentation.
One page links to SargeApache2Notes: