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 |