well, thanks to Jean-Michel Hiver, we seem to have a winner with the Apache::Registry HEAD request issue.
http://www.modperlcookbook.org/~geoff/modules/Apache-HEADRegistry-0.01.tar.gz below is the README. bascially, Apache::HEADRegistry is just a subclass of Apache::Registry that is HEAD request aware - it lets you go about your business as usual, but stops writes to the client short of the actual content if the request is a HEAD request. You ought to be able to use it as a drop-in replacement for Apache::Registry, with the usual caveats that come with Apache::RegistryNG over Apache::Registry. It seems fairly reasonable, but some additional smoke testing is always much appreciated. The only problem encountered so far seems to be redirect scripts, such as use CGI; $cgi = new CGI; print $cgi->redirect ("http://www.foo.com/"); what happens here is that Apache itself processes the redirect as a custom response and, due to some mod_perl shenanigans, doesn't respect the r->header_only request. so, what we seem to have here is a decent attempt at handling HEAD requests, without altering mod_perl core, that works for all but redirects (where the actual content is minimal). as I said, additonal tests are welcome - it's just a beginning effort. I am also open to other naming schemes, since I hate naming things. If folks like the idea, I may include an Apache::Test harness for the module, if I find some spare tuits. --Geoff NAME Apache::HEADRegistry - Apache::Registry drop-in for HEAD requests SYNOPSIS httpd.conf: PerlModule Apache::HEADRegsitry <Location /perl-bin> SetHandler perl-script PerlHandler Apache::HEADRegistry Options +ExecCGI PerlSendHeader On </Location> DESCRIPTION Apache::HEADRegistry is a drop-in for Apache::Registry that properly handles HEAD requests. Currently, Apache::Registry has no handling of HEAD requests, so mod_cgi and Apache::Registry scripts do not behave exactly the same. This module attempts to bridge that gap by intercepting headers much in the way that mod_perl does, but then obeying the value of $r->header_only. NOTES Apache::HEADRegistry is a subclass of Apache::RegistryNG, which means that it doesn't behave _exactly_ the same as Apache::Registry. Namely, it uses the filename of the script to determine the unique package namespace, whereas Apache::Registry uses the URI. HEADRegistry also does not do any of the auto-dereferencing in its print() method - if you want that type of thing, then you are obviously relying on the mod_perl API yourself and can therefore check $r->header_only yourself. This module is meant for those who want mod_cgi emulation only. FEATURES/BUGS No known bugs or features at this time, but consider this module alphaware. SEE ALSO perl(1), mod_perl(3), Apache(3), Apache::Registry(3), Apache::RegistryNG AUTHOR Geoffrey Young <[EMAIL PROTECTED]> COPYRIGHT Copyright (c) 2002, Geoffrey Young. All rights reserved. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself. HISTORY This code is derived in part from examples in the "The mod_perl Developer's Cookbook" For more information, visit http://www.modperlcookbook.org/ It also contains code lifted from various mod_perl internal sources, such as Apache.pm and mod_perl.c, and LWP. Thanks all for being good open source contributors.