Re: Caveats to using Perl Sections for server configuration?

2010-01-15 Thread Issac Goldstand
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?

2010-01-15 Thread Torsten Förtsch
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

2010-01-15 Thread Torsten Förtsch
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?

2010-01-15 Thread Tosh Cooey

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 ?

2010-01-15 Thread Tosh Cooey

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 ?

2010-01-15 Thread Ihnen, David
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 ?

2010-01-15 Thread Torsten Förtsch
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 ?

2010-01-15 Thread Tosh Cooey
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 ?

2010-01-15 Thread Tosh Cooey
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 ?

2010-01-15 Thread craig
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...