Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re^2: $foo->bar = 14;

by adrianh (Chancellor)
on Dec 30, 2002 at 04:31 UTC ( #223006=note: print w/replies, xml ) Need Help??

in reply to Re: $foo->bar = 14;
in thread $foo->bar = 14;

One problem with the approach you set forth is that it doesn't survive subclassing.


use strict; use warnings; { package Foo; sub new { bless {}, shift }; BEGIN { no strict 'refs'; for my $property (qw/foo bar/) { *$property = sub : lvalue { $_[0]->{$property} }; } } } { package Bar; use base qw(Foo); BEGIN { no strict 'refs'; for my $property (qw/fribble ni/) { *$property = sub : lvalue { $_[0]->{$property} }; } } }; my $o = Bar->new; $o->foo=1; $o->bar=2; $o->fribble=3; $o->ni=4; print join(', ', $o->foo, $o->bar, $o->fribble, $o->ni), "\n"; # produces # 1, 2, 3, 4

or am I missing something?

Replies are listed 'Best First'.
Re: Re^2: $foo->bar = 14;
by dws (Chancellor) on Dec 30, 2002 at 13:52 UTC
    or am I missing something?

    No, I missed something. I was reacting based on past misadventures with something very similar, without having read your code carefully enough. What you've written will indeed survive subclassing, though debugging through those generated methods is still going to be a problem. Mea culpa.

      I'm not the author of the code :-)

      Personally I very rarely generate accessors - not because I dislike generating them, but because I so rarely have a situation where bare-access to the object attributes is appropriate.

      Since many perl coders seem to spend a lot of time worrying about generating accessors I guess I must be weird!

      That said, the times I have generated accessors I've not come across debugging issues. I'm curious what problems you've encountered - can you illustrate?

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://223006]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (5)
As of 2020-08-08 14:56 GMT
Find Nodes?
    Voting Booth?
    Which rocket would you take to Mars?

    Results (51 votes). Check out past polls.