Это то, для чего создан модификатор метода augment
.Вы можете поместить это в свой суперкласс:
sub execute {
print "This runs before the subclass code";
inner();
print "This runs after the subclass code";
}
И затем вместо того, чтобы позволить вашим подклассам переопределять execute
напрямую, вы получаете их augment
it:
augment 'execute' => sub {
print "This is the subclass method";
};
По сутипредоставляет вам функциональность, аналогичную модификатору around
, за исключением того, что изменились отношения родитель / потомок.