#! /usr/bin/perl use warnings; use strict; use feature qw{ say }; { package My::Task::Runner; use Moo; has tasks => (is => 'ro'); sub run_tasks { $_->run for @{ shift->tasks }; } } { package My::Task; use Moo::Role; requires 'run'; has name => (is => 'ro', required => 1); } { package My::Task1; use Moo; with 'My::Task'; sub run { say "Running: ", shift->name; } } { package My::Task2; use Moo; with 'My::Task'; has mode => (is => 'ro'); sub run { my ($self) = @_; say "Running: ", $self->name, ' in ', $self->mode, ' mode.'; } } my $runner = 'My::Task::Runner'->new( tasks => [ 'My::Task1'->new(name => 'One'), 'My::Task2'->new(name => 'Two', mode => 'LOUD'), ], ); $runner->run_tasks;
In reply to Re: Newbie OO module-structure question
by choroba
in thread Newbie OO module-structure question
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |