in reply to Re^2: Subroutines with differing behaviour created from AUTOLOAD
in thread Subroutines with differing behaviour created from AUTOLOAD

Untested is right. That method will DEFINITELY work with more than one object in the class. I should know - I use it in production. You are NOT "injecting"(?) closures over the current $self. Test it before you make pronouncements like that.

With the original poster's code, this test:

my $test = Foo->new(); my $test2 = Foo->new(); $test->read_write("water"); $test2->read_write("wine"); print "test: should be water, is ", $test->read_write, "\n"; print "test2: should be wine, is ", $test2->read_write, "\n";
gives me:
test: should be water, is wine test2: should be wine, is wine

I'm confused as to what you're saying will definitely work - the OP's code has an AUTOLOAD sub which defines a lexical $self, in which he defines a couple of anonymous subs which refer to that $self. Nothing that can't be fixed by adding a my $self into the subs, as I did in my code and as you've done in yours.

Hugo

Replies are listed 'Best First'.
Re^4: Subroutines with differing behaviour created from AUTOLOAD
by davis (Vicar) on Jun 08, 2004 at 16:20 UTC
    Nothing that can't be fixed by adding a my $self into the subs
    After a couple of /msg's with dragonchild, I realise this is what I should have done in my created subs. To do otherwise creates the problem you originally told me about.

    davis
    It's not easy to juggle a pregnant wife and a troubled child, but somehow I managed to fit in eight hours of TV a day.
Re^4: Subroutines with differing behaviour created from AUTOLOAD
by dragonchild (Archbishop) on Jun 08, 2004 at 16:56 UTC
    Ahhh. You were referring to a problem with the OP's code, not a problem inherent with the algorithm. Your code didn't have the problem you mentioned, but you didn't say that. Hence why I thought you were referring to a problem that your code would still have.

    ------
    We are the carpenters and bricklayers of the Information Age.

    Then there are Damian modules.... *sigh* ... that's not about being less-lazy -- that's about being on some really good drugs -- you know, there is no spoon. - flyingmoose

    I shouldn't have to say this, but any code, unless otherwise stated, is untested