So I was wondering about this earlier in the week and I've asked the CB occasionally but no one has taken it up yet. If I write $method = $object -> can( 'method' ) I'd expect that to be used like $method -> ( @arguments ) instead of $object -> $method ( @arguments ). The current implementation allows you to do totally lame-brained things like calling methods from one object on another $object2 -> $method, using it as a class method ref($object) -> $method or not in OO at all $method -> ().
So this means that $method should be a closure to whatever it's a method for instead of just a code reference. @_ would need to get the object/class somehow to keep the current OO-argument passing behaviour. So why doesn't it work like this? I look at can() and see a question about what that object/class can do. The other part though - the code reference is much more general and doesn't quite answer the same question.