package TestPackage; use metaclass; # this sets up your class to use Class::MOP use Data::Dump qw( dump ); my $obj = bless {}, __PACKAGE__; print 'Can dump()' if $obj->meta->has_method('dump'); #### my @methods = $obj->meta->get_method_list; #### my @methods = $obj->meta->compute_all_applicable_methods; #### package MyFooInterface; use Moose::Role; requires 'bar'; #### package MyFoo; use Moose; with 'MyFooInterface'; sub bar { ... } # the bar method is required, the # class will fail to compile if it is # not present #### my $foo = MyFoo->new; if ($foo->does('MyFooInterface')) { ... }