Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re: How do YOU do OO in Perl?

by Juerd (Abbot)
on Oct 10, 2003 at 06:54 UTC ( #298179=note: print w/ replies, xml ) Need Help??

in reply to How do YOU do OO in Perl?

My OO style is simple and clean, thanks to Attribute::Property:

package Some::Class; sub new : New { my ($self) = @_; exists $self->{$_} or croak "Mandatory argument '$_' missing" for qw(id foo); return $self; } sub id : Property { /^\d+\z/ } sub foo : Property; sub bar : Property; sub blah : Property { $_ < 50 } sub _private : method { my ($self) = @_; ... } sub do_something : method { my ($self, $quux) = @_; ... }
And this is how you use this Some::Class:
my $thing = Some::Class->new( id => 15, foo => "Hello" ); $thing->foo =~ s/e/a/; $thing->id++; $thing->do_something($$); $thing->blah = 10; $thing->blah = 60; # dies
See also $foo->bar = 14; and $foo->bar = 14; revisited: Attribute::Property.

Juerd # { site => '', plp_site => '', do_not_use => 'spamtrap' }

Comment on Re: How do YOU do OO in Perl?
Select or Download Code
Replies are listed 'Best First'.
Re: Re: How do YOU do OO in Perl?
by batkins (Chaplain) on Oct 10, 2003 at 10:26 UTC
    That's very clean, indeed. I think I'll try combining it with Acme::Dot. Thanks for the info.


Log In?

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

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (4)
As of 2015-11-29 06:10 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (747 votes), past polls