Skip to content

Instantly share code, notes, and snippets.

@kanatohodets
Last active September 19, 2015 20:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kanatohodets/aff43baf1f6c2564b916 to your computer and use it in GitHub Desktop.
Save kanatohodets/aff43baf1f6c2564b916 to your computer and use it in GitHub Desktop.
dynamic method generation in a role
package Foobar;
use Moose;
with 'Foobar::Gigarole', {
number => 5
};
1;
use 5.20.2;
use Foobar;
my $foo = Foobar->new;
$foo->blorg_3;
$foo->blorg_5;
$foo->blorg_1;
# blorg_3 was called
# blorg_5 was called
# blorg_1 was called
package Foobar::Gigarole;
use MooseX::Role::Parameterized;
parameter number => (
is => 'ro',
isa => 'Str',
required => 1,
);
role {
my $p = shift;
my $num = $p->number;
foreach my $i (1 .. $num) {
method "blorg_$i" => sub {
print "blorg_$i called\n";
}
}
};
1;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment