1

around MethodModierへの複数の呼び出し間で変数を渡すことは可能ですか? 例 (それは機能しませんが、うまくいけば私がやりたいことを伝えます)

sub mysub { ... };

around 'mysub' => sub {
   my $orig = shift;
   my $self = shift;

   my $value = get_value;

   $self->orig(@_);
};

around 'mysub' => sub {
   my $orig = shift;
   my $self = shift;
   my $value = shift;

   my $output
       = "sometext $value"
       . $self->orig(@_);
       . 'someothertext $value'
       ;
};

最終的には、これらの「周り」をプラグ可能なトレイトに配置したいと考えています。事前にどのトレイトがロードされているかはわかりませんが、最終的な出力はきれいにフォーマットされます。

私がこれについて完全に間違っていると考えている可能性があるので、他の提案を歓迎します。

4

2 に答える 2

0

インスタンス変数を使用します。

$self->{value} = get_value;
...
my $value = $self->{value};

実際の回答については、質問のコメントを参照してください。ここで繰り返しますので、次のおかげで回答を受け入れることができます。

jmz)

于 2010-12-26T22:53:03.477 に答える
0

あなたがやろうとしていることには論理がありません。

「around 修飾子は、最初の引数として元のメソッドを受け取り、次にオブジェクトを受け取り、最後にメソッドに渡されたすべての引数を受け取ります。」

https://metacpan.org/pod/Moose::Manual::MethodModifiers#BEFORE-AFTER-AND-AROUND

于 2010-08-16T02:07:11.523 に答える