You're taking the coderef fine, but you don't show us how you're using it. To use a coderef as a method, you need to can manually pass the object as the first arg. Here's an example:
{ package foo; sub new { bless {}, shift } sub foo { ++$_[0]{foo} } } $foo = foo->new; $cr = \&foo::foo; print $cr->($foo), "\n" for 1 .. 5;
Perhaps if you post the code where you try to use the coderef, we can give a less general answer.
Update: You can also wrap the method call in an anonymous subroutine, if you'd prefer that:
{ package foo; sub new { bless {}, shift } sub foo { ++$_[0]{foo} } } $foo = foo->new; $cr = sub { $foo->foo(@_) }; print $cr->(), "\n" for 1 .. 5;
Update: fixed to reflect chromatic's reply
In reply to Re: coderef to an object method
by revdiablo
in thread coderef to an object method
by genecutl
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |