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
In reply to Re: Trying to learn how to build a module
by arturo
in thread Trying to learn how to build a module
by Yoda
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |