> Yes, but why? That is simply a record of data that was in the
> request. You can't change the past. What are you really trying to
> do? Store some data for a later handler?


Something like that. Not really later handlers, but just later
subroutines. It has to do with the nature of my application.

> If all you want to do is change them around in some sub as you do work
> on them, copy them all into local variables and do whatever you like
> with them. You can copy them into a hash of array refs to preserver
> multiple values.


I thought of this but....it seems kind of inefficient.

Anyhow, I came up with a way that works for me. I wrote a wrapper
around Apache2::Request. The wrapper saves any modifications to the
request parameters as object variables, and each time I try to
retrieve a value, my wrapper checks its object variables first, and if
its not there, it tries to retrieve the value from Apache2::Request.
This way is a little bit more efficient than copying all the params
into a hash since params that are not used are never touched.

Thanks for your help Perrin,

Jimmy


On Nov 23, 2007 3:40 PM, Perrin Harkins wrote:
> On Nov 23, 2007 5:57 PM, Jimmy Li wrote:
> > I am using Apache2::Request - APR::Request::Param::Table is just the
> > underlying table used by Apache2::Request.

>
> Sorry, I was thinking you were using the mod_perl API directly.
>
> > Get the request parameters using the tied APR::Request::Param::Table
> > object (which is returned by Apache2::Request->new($r)->param in
> > scalar context) as well as being able to modify the request parameters
> > in the tied APR::Request::Param::Table object.

>
> Yes, but why? That is simply a record of data that was in the
> request. You can't change the past. What are you really trying to
> do? Store some data for a later handler?
>
> The docs warn that you can't change these parameters in a way that is
> visible to anyone else:
>
> "Note: modifications to the scalar $req->param() table only affect the
> returned table object (the underlying C apr_table_t is generated from
> the parse data by apreq_params()). Modifications do not affect the
> actual request data, and will not be seen by other libapreq2
> applications."
>
> If all you want to do is change them around in some sub as you do work
> on them, copy them all into local variables and do whatever you like
> with them. You can copy them into a hash of array refs to preserver
> multiple values.
>
> - Perin
>