package Foo {
use strict;
use warnings;
use Class::Tiny;
1;
}
__END__
####
package Bar {
use strict;
use warnings;
use Class::Tiny;
1;
}
__END__
####
package Methods {
use strict;
use warnings;
use feature qw(isa);
use Logic::Easy;
no warnings qw(redefine);
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;
use feature qw(say);
my $gizmo = Foo->new();
my $mojo = Bar->new();
# dd $gizmo, $mojo;
say Methods::frobnicate($_) for
($gizmo, $mojo);
__END__