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

您尝试做的事情没有逻辑。

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

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

于 2010-08-16T02:07:11.523 回答
0

使用实例变量:

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

有关实际答案,请参阅问题评论。我只是在这里重申,所以我可以接受答案,感谢:

jmz)

于 2010-12-26T22:53:03.477 回答