#!/usr/bin/perl use strict; use warnings; use Test::More tests => 2; package Foo; sub new { bless {}, $_[0] } sub report { return [ @_ ] } package main; my $foo = Foo->new(); my $report = \&Foo::report; my $moreport = $foo->can( 'report' ); is_deeply( $foo->$report( 'abc' ), [ $foo, 'abc' ], 'coderef should work as method on object' ); is_deeply( $foo->$moreport( 'def' ), [ $foo, 'def' ], '... even if returned from can()' );