before, after はそれぞれ、メソッド実行の前、後にコールされるサブルーチンをフックとして追加できるんだろうなーと思っていてその通りだった。 around だけわからなかったので、サンプルコードをそのまま実行してみた。
http://search.cpan.org/~drolsky/Moose-0.89/lib/Moose/Manual/MethodModifiers.pod
around 'foo' => sub { my $orig = shift; my $self = shift; print "I'm around foo\n"; $self->$orig(@_); print "I'm still around foo\n"; };
around は、 'foo' ってメソッドを上書きするものだった。もともと呼ばれるはずだったメソッドのサブルーチンリファレンスを第一引数に、自分自身のインスタンスを第二引数にとり、 $self->$orig(@_) でメソッドを実行できて、それ以外にも好きなことができると。 $self->$orig(@_) を呼ばないなんてこともできる。
どういうときに使えばいいかはまだわからないけど、とにかく一つシンタックスを理解できてよかった。