in reply to How to turn an object in my own subclass

As part of your new method, you create a new HTTP::Request object. But in this new scenario, you already have an HTTP::Request object. So why not create a variation of your new method that works with an existing object.

sub new_from_http_request { my ($class) = shift ; my $self = $shift ; $self->{myA} = undef ; return bless $self, $class ; }

You can then do something like:

my $httpr = AnotherModule::f() ; my $ownHttpr = My::HTTPRequest->new_from_http_request($httpr);

Alternatively, you could use the same new method and just make it a bit cleverer:

sub new{ my ($class) = shift ; my $self; if (@_) { my $self = shift ; } else { my $self = $class->SUPER::new(@_) ; } $self->{'myA'} = undef ; return bless $self, $class ; }

In both cases, the code can probably be improved by using something like UNIVERSAL::isa to ensure that the parameter that you have been passed is actually an HTTP::Request object (or a subclass).

--
<http://dave.org.uk>

"The first rule of Perl club is you do not talk about Perl club."
-- Chip Salzenberg

Replies are listed 'Best First'.
Re^2: How to turn an object in my own subclass
by jeteve (Pilgrim) on Sep 05, 2006 at 10:29 UTC
    Thx !

    I ended choosing the second solution (the one with the single new method) just after asking the question :)

    Actually, writing down questions often lead you to think about a solution.

    -- Nice photos of naked perl sources here !

      Actually, writing down questions often lead you to think about a solution.

      That's why it's good to have a teddy bear (or a stuffed TuX) handy, according to Kernighan and Pike in The practice of programming.

      --
      David Serrano