package Methods { use strict; use warnings; use feature qw(isa); use Logic::Easy; use Exporter qw(import) no warnings qw(redefine); our @EXPORT_OK = qw(frobnicate); sub frobnicate : Multi(frobnicate) { SIG [$o] where {$o isa 'Foo'}; qq(foo); } sub frobnicate : Multi(frobnicate) { SIG [$o] where {$o isa 'Bar'}; qq(bar); } 1; } __END__ #### #!/usr/bin/env perl use strict; use warnings; use lib q(.); use Bar; use Foo; use Methods qw(frobnicate); use feature qw(say); my $gizmo = Foo->new(); my $mojo = Bar->new(); # dd $gizmo, $mojo; say frobnicate($_) for ($gizmo, $mojo); __END__ #### karl@h3002993:~/src/perl/mmdemo$ ./run.pl Logic::Easy control failed at Methods.pm line 16. at Methods.pm line 16.

##
## say frobnicate($mojo);