On 5/20/08, william <[EMAIL PROTECTED]> wrote:
> On 5/20/08, Dodger <[EMAIL PROTECTED]> wrote:
> > 2008/5/19 Michael Peters <[EMAIL PROTECTED]>:
> >
> > > william wrote:
> > >
> > >> Then I would need to modify the QueryData module then,
> > >
> > > No don't do that.
> > >
> > >> by modifying
> > >> the standard module would it make my future maintenance more
> > >> complicated ?
> > >
> > > Absolutely.
> > >
> > >> Do you have any tips for me ?
> > >
> > > Wrap the object in your own package. Let's call it My::QueryData.
> > >
> > > package My::QueryData;
> > > use QueryData;
> > >
> > > my $query_data;
> > > sub create {
> > > $query_data = QueryData->new(...);
> > > }
> > >
> > > sub get {
> > > return $query_data;
> > > }
> > >
> >
> >
> > For extra syntactic sugar, you could always just do it singlet style.
> >
> > package My::QueryData;
> > use base QueryData;
> > our $singlet;
> >
> > sub new {
> > return $singlet if $singlet;
> > return $singlet = QueryData->new(@_);
> > }
> >
> >
> > Of course, if you want to allow different ones for different
> > invocations (i.e. Pkg->new(foo => 1) and Pkg->new(foo => 2), you can
> > make $singlet a hashref keyed by those options, instead, and check for
> > the appropriate one
> >
>
>
> Thanks, those solutions are nice.
>
Btw, I just try out that solution, it is awsome, it only takes time
while server startup. But subsequent request. it is so fast. I am new
to mod_perl, now I am in love with it. lol