Ok, so what is the recommended way of generating accessor/mutator methods? ^This seems to be the prevailing idiom , and I *really* don't want to code them by hand (or write a program that codes them by hand) since very time I add/remove a parameter I'll have to add/remove the accessor.
My first thought, was to set it so it does not ignor the calling class/object like so:
*$datum = sub {
my self = shift;
$self->{$datum} = shift if @_;
return $self->{$datum};
};
This didn't work.
Then, I tried doing this without the self:
*$datum = sub {
$self->{$datum} = shift if @_;
return $self->{$datum};
};
Again, no change in result.
Then I tried without the reference to self:
*$datum = sub {
$datum = shift if @_;
return $datum;
};
Surprise, this had no affect either.
Then, I tried doing this without the typeglob. (I'm basically pissing into the wind at this point so what do I have to loose)
$datum = sub {
my self = shift;
$self->{$datum} = shift if @_;
return $self->{$datum};
};
Not surprisingly, no change again...
Here's what really stumps me, through all of these changes I would expect to see an error at least, but the program behaves *identically* through all of the changes.
The immediate fix is to look at the XXX comment and make that generated method not close over $self.
I guess I don't understand what you mean. How do you reference the object without referencing the object? (Which is what $self is right? a reference to the object.)
really, thank you for all of your help. |