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