has anyone here been able to do multiple directives (such as three or more "PerlSetVar") via <perl> sections, from inside the %VirtualHost{$NameVirtualHost} hash? we haven't been able to figure it out:
here are the four ways we figured might work; but each of them generates a "PerlSetVar requires two args only" error... pooh. 1. string pairs (doesn't work): %VirtualHost = ( $NameVirtualHost => [ #snip PerlSetVar => [ MasonCompRoot => "/var/www/$site", MasonDataDir => "/var/cache/mason/$site", MasonAutoHandlerName => "$autohandlername", MasonDHandlerName => "$dhandlername", MasonDeclineDirs => "0", ], #snip ] ); altho this is what the documentation means (see http://perl.apache.org/docs/2.0/api/Apache/PerlSections.html) when it says "shifted off the @list": If an Apache directive can take two or three arguments you may push strings (the lowest number of arguments will be SHIFTED OFF THE @LIST) or use an array reference to handle any number greater than the minimum for that directive: it doesn't work if you can have multiple occurrences on a directive that takes a consistent number of (in this case, two) args. 2. string expressions (doesn't work): PerlSetVar => [ "MasonCompRoot /var/www/$site", "MasonDataDir /var/cache/mason/$site", "MasonAutoHandlerName $autohandlername", "MasonDHandlerName $dhandlername", "MasonDeclineDirs 0", ], 3. sub-arrays (doesn't work): PerlSetVar => [ ["MasonCompRoot", "/var/www/$site",], ["MasonDataDir", "/var/cache/mason/$site",], ["MasonAutoHandlerName", "$autohandlername",], ["MasonDHandlerName", "$dhandlername",], ["MasonDeclineDirs", "0",], ], altho this is what the documentation (ibid) implies when it says to "use an array reference": If an Apache directive can take two or three arguments you may push strings (the lowest number of arguments will be shifted off the @list) or USE AN ARRAY REFERENCE to handle any number greater than the minimum for that directive: apparently not applicable for "two-only" directives. major bummer. 4. sub-expressions (doesn't work): PerlSetVar => [ [ "MasonCompRoot /var/www/$site", ], [ "MasonDataDir /var/cache/mason/$site", ], [ "MasonAutoHandlerName $autohandlername", ], [ "MasonDHandlerName $dhandlername", ], [ "MasonDeclineDirs 0", ], ], they all generate the "only two args, please" error. NOTE that it does accept two args, if that's all you give it: ... PerlSetVar => [ SomeVarName => 'someValueHere' ], ... just as it should. but we need several "perlsetvar"! here's the httpd.conf set we're trying to replicate, which is certainly legitimate config syntax: <VirtualHost *:80> #snip PerlSetVar MasonCompRoot /var/www/mysite PerlSetVar MasonDataDir /var/cache/mason/mysite PerlSetVar MasonAutoHandlerName myautohandlername PerlSetVar MasonDHandlerName mydhandlername PerlSetVar MasonDeclineDirs 0 #snip </VirtualHost> bottom line: ============ all we want to do is replicate the above kind of setup (via perl, in <perl> sections or startup.pl). isn't there a way to do so? version info: # apache2 -v Server version: Apache/2.0.48 Server built: Jan 30 2004 20:35:32 # uname -a Linux tigris 2.4.21-xfs #13 SMP Tue Aug 26 01:46:14 CEST 2003 i686 GNU/Linux -- will trillich http://www.serensoft.com/ http://www.midwestRepo.com/ http://www.skylineAuto.net/ -- Report problems: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html List etiquette: http://perl.apache.org/maillist/email-etiquette.html