package Debug {
use Role::Tiny;
use feature qw(say);
requires qw(debug);
say __PACKAGE__;
sub spew {
my ( $self, $message ) = @_;
$message if $self->debug;
}
1;
}
####
package Foo {
use Class::Tiny qw(nose debug);
use Role::Tiny::With;
use Class::Method::Modifiers;
use feature qw(say);
with qw(Debug);
after 'nose' => sub {
say shift->spew(__PACKAGE__);
};
1;
}
####
package Bar {
use Class::Tiny qw(nose debug);
use Role::Tiny::With;
use Class::Method::Modifiers;
use feature qw(say);
with qw(Debug);
after 'nose' => sub {
say shift->spew(__PACKAGE__);
};
1;
}
####
#!/usr/bin/env perl
use strict;
use warnings;
use Foo;
use Bar;
use feature qw(say);
say __PACKAGE__;
my $foo = Foo->new( { debug => 1, nose => q(kumquat) } );
my $bar = Bar->new( { debug => 1, nose => q(cuke) } );
say $foo->nose();
say $bar->nose();
__END__
karls-mac-mini:Mano_Man karl$ ./run.pl
Debug
main
Foo
kumquat
Bar
cuke