Not really sure if this will help in your case, but here's a little trick with coderefs that many people don't know about.
#!/usr/bin/perl use strict; use warnings; { package Foo; sub new { bless {} => shift } sub name { return 'telcontar' } } my $method = sub { return shift->name }; print Foo->new->$method;
That should print 'telcontar'. In other words, you can call your coderefs as methods on your object and the first argument in @_ will be your object, as expected.
Update: that changes your code to this:
sub access { my ( $self, $x, $y ) = splice @_, 0, 3; my $method = $self->{crefs}{$x}{$y}; return $self->$method(@_); }
Cheers,
Ovid
New address of my CGI Course.
In reply to Re: Refactoring a module with many anonymous subrefs as an OO module
by Ovid
in thread Refactoring a module with many anonymous subrefs as an OO module
by telcontar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |