Re: Caveats to using Perl Sections for server configuration?
FWIW, you can look at the source of Apache::UploadMeter to see an example of Perl sections in use - they're actually called during the httpd.conf parsing triggered by statements found in the httpd.conf Issac Perrin Harkins wrote: I don't use them, but in a startup.pl you would be in a different package. - Perrin On Wed, Jan 13, 2010 at 8:59 PM, Boysenberry Payne boysenbe...@habitatlife.com wrote: Do you know if the scope of Perl Sections are the same as when using a startup.pl? -bop On Jan 13, 2010, at 2:15 PM, Perrin Harkins wrote: On Wed, Jan 13, 2010 at 3:22 PM, Boysenberry Payne boysenbe...@habitatlife.com wrote: I'm using Perl blocks in my apache conf files for early server configuration. I remember reading someone on this list saying they wouldn't use Perl Sections at all. That might have been me. I don't like to use them. I find it simpler to put all the perl code in a startup.pl. I also like to generate my httpd.conf from templates, and this means I can also generate conf files for non-mod_perl servers, like my proxy. - Perrin
Re: A ghost in the machine?
On Friday 15 January 2010 00:41:25 Tosh Cooey wrote: Well Gang, we solved the smaller @_ mystery but not the larger different behaviour under mod_perl mystery. No, we have. A registry script is wrapped into a subroutine. So your index.pl will look like: sub ... { package ...; use MyConfig; use ClientConf; use MyUser; my $vars = { config = cfg }; ... } This function is called with $r as the one and only parameter. So @_=($r) at the time of calling cfg. That means you is fact call cfg($r). Torsten
Re: how to modify post data before $r-internal_redirect
On Friday 15 January 2010 06:49:14 陈建春 wrote: we know apache takes all post form data to sub-request when we do internal redirect, but I will modify some param value and then pass the new value to subrequest, is it possible? You'll need a request based input filter. The docs provide some examples. Torsten
Re: A ghost in the machine?
Case closed. Danke an alle! Tosh Torsten Förtsch wrote: On Friday 15 January 2010 00:41:25 Tosh Cooey wrote: Well Gang, we solved the smaller @_ mystery but not the larger different behaviour under mod_perl mystery. No, we have. A registry script is wrapped into a subroutine. So your index.pl will look like: sub ... { package ...; use MyConfig; use ClientConf; use MyUser; my $vars = { config = cfg }; ... } This function is called with $r as the one and only parameter. So @_=($r) at the time of calling cfg. That means you is fact call cfg($r). Torsten -- McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/
$r-subprocess_env('REQUEST_URI') returns undef ?
From: http://perl.apache.org/docs/2.0/api/Apache2/RequestRec.html#C_subprocess_env_ subprocess_env Get/set the Apache subprocess_env table, or optionally set the value of a named entry. When the $key argument (string) is passed, it returns the corresponding value (if such exists, or undef. The following two lines are equivalent: $val = $r-subprocess_env($key); $val = $r-subprocess_env-get($key); Ok... Seems simple enough... In my module if I do the following: $r-subprocess_env; my $uri = $ENV{REQUEST_URI}; The I get the URI. But if I change the above to: my $uri = $r-subprocess_env('REQUEST_URI'); I get undef. Confused. Tosh -- McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/
RE: $r-subprocess_env('REQUEST_URI') returns undef ?
At the risk of being kind of obvious, did you try $r-uri? http://perl.apache.org/docs/2.0/api/Apache2/RequestRec.html#C_uri_ David -Original Message- From: Tosh Cooey [mailto:t...@1200group.com] Sent: Friday, January 15, 2010 10:42 AM To: modperl@perl.apache.org Subject: $r-subprocess_env('REQUEST_URI') returns undef ? From: http://perl.apache.org/docs/2.0/api/Apache2/RequestRec.html#C_subprocess_env_ subprocess_env Get/set the Apache subprocess_env table, or optionally set the value of a named entry. When the $key argument (string) is passed, it returns the corresponding value (if such exists, or undef. The following two lines are equivalent: $val = $r-subprocess_env($key); $val = $r-subprocess_env-get($key); Ok... Seems simple enough... In my module if I do the following: $r-subprocess_env; my $uri = $ENV{REQUEST_URI}; The I get the URI. But if I change the above to: my $uri = $r-subprocess_env('REQUEST_URI'); I get undef. Confused. Tosh -- McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/
Re: $r-subprocess_env('REQUEST_URI') returns undef ?
On Friday 15 January 2010 19:41:45 Tosh Cooey wrote: When the $key argument (string) is passed, it returns the corresponding value (if such exists, or undef. The following two lines are equivalent: $val = $r-subprocess_env($key); $val = $r-subprocess_env-get($key); Ok... Seems simple enough... In my module if I do the following: $r-subprocess_env; my $uri = $ENV{REQUEST_URI}; The I get the URI. But if I change the above to: my $uri = $r-subprocess_env('REQUEST_URI'); I get undef. Tosh, do you know what VOID context means in perl? @list=function() # this list context $scalar=function()# this is scalar context function()# this is void context: the return value is ignored Now, in void context and only then subprocess_env() calls ap_add_common_vars(r); ap_add_cgi_vars(r); These 2 functions add such things like REQUEST_URI to the environment. So, if you do it like this: $r-subprocess_env; # void context my $uri = $r-subprocess_env('REQUEST_URI'); it is very likely that you get the REQUEST_URI. But as David pointed out, $r-uri is the much better way. Torsten
Re: $r-subprocess_env('REQUEST_URI') returns undef ?
It's probably obvious, but $r kinda scares me. I guess I saw subprocess_env in the docs and so that's where I stopped... What a couple centimeters more would have done... Thank-you David!! Tosh Ihnen, David wrote: At the risk of being kind of obvious, did you try $r-uri? http://perl.apache.org/docs/2.0/api/Apache2/RequestRec.html#C_uri_ David -Original Message- From: Tosh Cooey [mailto:t...@1200group.com] Sent: Friday, January 15, 2010 10:42 AM To: modperl@perl.apache.org Subject: $r-subprocess_env('REQUEST_URI') returns undef ? From: http://perl.apache.org/docs/2.0/api/Apache2/RequestRec.html#C_subprocess_env_ subprocess_env Get/set the Apache subprocess_env table, or optionally set the value of a named entry. When the $key argument (string) is passed, it returns the corresponding value (if such exists, or undef. The following two lines are equivalent: $val = $r-subprocess_env($key); $val = $r-subprocess_env-get($key); Ok... Seems simple enough... In my module if I do the following: $r-subprocess_env; my $uri = $ENV{REQUEST_URI}; The I get the URI. But if I change the above to: my $uri = $r-subprocess_env('REQUEST_URI'); I get undef. Confused. Tosh -- McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/
Re: $r-subprocess_env('REQUEST_URI') returns undef ?
Ah... I assumed that $r-subprocess_env in VOID context was an expensive operation as it populated $ENV (from what I had read) as one should try to avoid it. I also find it non-intuitive that: $r-subprocess_env; # void context my $uri = $r-subprocess_env('REQUEST_URI'); is the same as $r-subprocess_env; my $uri = $ENV{REQUEST_URI}; But that's obviously just my lack of intuitiveness. Yes, $r-uri is about a billion times more useful, thank-you again David, and thanks for your help Torsten! Tosh Torsten Förtsch wrote: On Friday 15 January 2010 19:41:45 Tosh Cooey wrote: When the $key argument (string) is passed, it returns the corresponding value (if such exists, or undef. The following two lines are equivalent: $val = $r-subprocess_env($key); $val = $r-subprocess_env-get($key); Ok... Seems simple enough... In my module if I do the following: $r-subprocess_env; my $uri = $ENV{REQUEST_URI}; The I get the URI. But if I change the above to: my $uri = $r-subprocess_env('REQUEST_URI'); I get undef. Tosh, do you know what VOID context means in perl? @list=function() # this list context $scalar=function()# this is scalar context function()# this is void context: the return value is ignored Now, in void context and only then subprocess_env() calls ap_add_common_vars(r); ap_add_cgi_vars(r); These 2 functions add such things like REQUEST_URI to the environment. So, if you do it like this: $r-subprocess_env; # void context my $uri = $r-subprocess_env('REQUEST_URI'); it is very likely that you get the REQUEST_URI. But as David pointed out, $r-uri is the much better way. Torsten -- McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/
Re: $r-subprocess_env('REQUEST_URI') returns undef ?
If $r scares you, are $c = $r-connection() and $s = $r-server() truly terrifying :-) cmac On Jan 15, 2010, at 4:08 PM, Tosh Cooey wrote: It's probably obvious, but $r kinda scares me. I guess I saw subprocess_env in the docs and so that's where I stopped... What a couple centimeters more would have done...