Currently, when running OpenGuides under mod_perl, redirects do not work, because the Apache $r object associated with the CGI object do not exist. (You get an error message: Can't call method "send_cgi_header" on an undefined value at (eval 64) line 62.)
This happens both after an edit, and when following redirects, and possibly in other cases as well.
After some investigation last night, I tracked the source of this down: currently, OpenGuides redirects use a class method of CGI:
CGI->redirect($redirectparams);
However, this does not work. It seems that class methods in this case never initialize the Apache request variable that is needed in order to send_cgi_header.
The solution for this, is to replace CGI->redirect calls with:
my $q = new CGI; $q->redirect($redirectparams);
I have too little knowledge to be able to speak to whether this is a fault within CGI or a fault within OpenGuides usage of it. However, this change has allowed me to successfully use mod_perl on the Open Guide to Boston in testing, and this fix or a similar fix should probably be integrated into OpenGuides in either case, since upgrading the system CGI.pm is a difficult task. The current debian packages for stable include mod_perl 1.999.021, which is not compatible with CGI.pm 3.16, and upgrading mod_perl requires a full removal due to an API rename (as described at http://perl.apache.org/docs/2.0/rename.html).
The code that needs to be changed is in OpenGuides.pm, in two functions:
sub redirect_to_node sub find_within_distance
A patch which makes these changes is attached.