in reply to coderef to an object method
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: coderef to an object method
by chromatic (Archbishop) on Jul 21, 2004 at 06:14 UTC | |
by Anonymous Monk on Aug 31, 2018 at 17:57 UTC |