Let me double check my understanding. The warnings will not occur if Gitweb is run as a regular CGI script because then it won't be nested inside a call from ModPerl::Registry? Will it also not complain if I provided my own $project_list in the first place? Also, I looked at some examples from the second and third page of an article on the subject, http://www.perl.com/pub/a/2002/05/07/mod_perl.html? and it looks "fixable". Is there a particular reason why any of them are not desirable? Note: I haven't tried anything yet, just wondering if you know off hand -- Mark A Rada (ferrous26) marada@xxxxxxxxxxxx On Fri, Aug 7, 2009 at 10:14 AM, Jakub Narebski<jnareb@xxxxxxxxx> wrote: > Mark A Rada <markrada26@xxxxxxxxx> writes: > >> It doesn't seem to cause any other problems, but I don't know if it is >> significant or not. >> >> [Fri Aug 7 08:51:13 2009] gitweb.cgi: Variable "$project_maxdepth" >> may be unavailable at /var/www/private/gitweb/cgi-bin/gitweb.cgi line >> 2296. >> [Fri Aug 7 08:51:13 2009] gitweb.cgi: Variable "$projectroot" may be >> unavailable at /var/www/private/gitweb/cgi-bin/gitweb.cgi line 2304. >> >> >> Apache 2.2.12/ mod_perl 2.04/ perl 5.8.8 > > From perldiag(1) manpage: > > Variable "%s" may be unavailable > > (W closure) An inner (nested) anonymous subroutine is inside a > named subroutine, and outside that is another subroutine; and the > anonymous (innermost) subroutine is referencing a lexical variable > defined in the outermost subroutine. For example: > > sub outermost { my $a; sub middle { sub { $a } } } > > If the anonymous subroutine is called or referenced (directly or > indirectly) from the outermost subroutine, it will share the > variable as you would expect. But if the anonymous subroutine is > called or referenced when the outermost subroutine is not active, > it will see the value of the shared variable as it was before and > during the *first* call to the outermost subroutine, which is > probably not what you want. > > In these circumstances, it is usually best to make the middle > subroutine anonymous, using the "sub {}" syntax. Perl has > specific support for shared variables in nested anonymous > subroutines; a named subroutine in between interferes with this > feature. > > The warning is about 'wanted' anonymous subroutine passed to > File::Find::find. The "middle" subroutine is git_get_projects_list, > and the "outermost" is mod_perl / ModPerl::Registry request loop. > > We can't make git_get_projects_list anonymous, but anonymous > subroutine is not called or referenced outside git_get_projects_list, > nor it is called or referenced outside mod_perl request/event loop. > > This warning is harmless... but I do not know how to silence it. > > -- > Jakub Narebski > Poland > ShadeHawk on #git > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html