in reply to Trying to learn how to build a module
In Perl, an object is a reference that's been blessed into a package. You've got parts of the necessary procedure in your new subroutine, but you need the classname (and the two-argument version of bless -- consult perldoc -f bless for more); when you do the call to new, the first argument passed to the sub is the name of the class (in this case, "mytest").
So change your constructor to:
sub new { my $class = shift; my $self = {}; # makes $self a reference to an anon hash bless $self, $class; $self; # returns $self (blessed hashref) }
(The shift acts on the argument list @_, so you get the first argument with the first shift)
Further, a method receives the object as its first argument, so your methods need to know what object they're talking about:
sub get_ foo { my $self = shift; $self->{foo}; } sub put_foo { my $self = shift; $self->{foo} = shift; }
(both of these methods are *skeletal*, but they'll do for testing purposes =)
Note, also, that if you don't want $self to be a hashref, it doesn't *have to be*, but I'd keep it as one for now.
Good references? perldoc perltoot, perldoc perlbot, and the Tutorials section on this here site. And if you like dead-tree stuff, you can't go wrong with Damian Conway's excellent Object Oriented Perl <-- a review
HTH!
Philosophy can be made out of anything. Or less -- Jerry A. Fodor
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Trying to learn how to build a module
by Yoda (Sexton) on Feb 02, 2001 at 20:23 UTC | |
by davorg (Chancellor) on Feb 02, 2001 at 20:25 UTC | |
by Yoda (Sexton) on Feb 02, 2001 at 20:30 UTC |