在around方法修饰符周围传递变量

时间:2010-08-15 10:03:54

标签: perl moose method-modifier

是否可以在多次调用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'
       ;
};

我最终希望将这些'arounds'放在可插拔的特性中,我不会真正知道哪些是预先加载的,但最终的输出将被整齐地格式化。

我可能认为这完全错了,所以欢迎其他建议。

2 个答案:

答案 0 :(得分:0)

你要做的事情没有逻辑。

  

“around修饰符接收   原始方法作为其第一个参数,   然后是对象,最后是任何对象   传递给方法的参数。“

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

答案 1 :(得分:0)

使用实例变量:

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

请参阅问题评论以获得实际答案。我只是在此重复一遍,所以我可以接受答案,谢谢:

jmz