in reply to Re: Calling arbitrary method from new
in thread Calling arbitrary method from new

Yes, I believe that is exactly what I want. I was trying to do something like $self->&{ $argument }( ... ), so I can't believe I didn't try this.

On the other note: Is it really better to declare all of my methods, even if they are all so similar? I was reading through one of the intro to OO articles in the perldocs, which said AUTOLOAD is good, but I can see your point. Maybe I'll have to rewrite some of my code then.

Thanks for the help!

    -Bryan

Replies are listed 'Best First'.
Re^3: Calling arbitrary method from new
by tlm (Prior) on Jun 10, 2005 at 03:50 UTC

    No ampersand, but the way chromatic wrote it:

    $self->$argument( ... )
    Recently there was an interesting discussion on the use of AUTOLOAD for accessor generation; it starts here. In particular, tilly's first reply illustrates the approach that chromatic alluded to.

    the lowliest monk

Re^3: Calling arbitrary method from new
by hv (Prior) on Jun 10, 2005 at 08:21 UTC

    If I have a number of very similar methods, I like to highlight that by generating them in a loop with something like:

    for my $method (qw/ foo bar /) { no strict 'refs'; *$method = sub { use strict 'refs'; my $self = shift; $self->{"_$method"} = shift if @_; return $self->{"_$method"}; } }

    I'd usually use AUTOLOAD for this only if the list is infinite - for example if attribute methods are created on demand for arbitrary attributes supplied for the user.

    Hugo