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.