Вы можете использовать Moose::MethodModifiers
.Я не знаю много о Moose
, но из руководства я вижу, что вы можете это сделать.Вот так.
#!/usr/bin/perl -w
use 5.010;
use strict;
use Moose;
sub sub_one {
say "I am sub one!";
}
sub sub_two {
say "Guess who!";
}
# Note that the name of the function being modified isn't passed in in
# any way
for my $func qw(sub_one sub_two) {
around $func => sub {
my $orig = shift;
say "Running ${func}(@_)";
# call the original sub
my $self = shift;
$self->$orig(@_);
}
}
sub_one(21, 12);
sub_two();
Это дает что-то вроде
cnicutar@aiur:~$ perl method_modifiers.pl
Running sub_one(21 12)
I am sub one!
Running sub_two()
Guess who!
Обратите внимание, что я только новичок, поэтому будьте осторожны с этим кодом.