Re: "automatically" wrapping methods.
[email protected] (Peter Shangov)
| Newsgroups | perl.moose |
|---|---|
| Message-ID | <[email protected]> |
I want to do what the author of the original post in this thread asked for: automatically wrap all my methods with custom code. I have a module (MooseX::Params) that performs argument processing for subs via attributes, e.g.:
sub foo :Args(bar, baz) { ... }
The wrapping is triggered by the application of a subroutine attribute (e.g. 'Args'). However, I would prefer an interface where the signature is specified in the prototype slot of the sub:
sub foo (bar, baz) { ... }
As it happens, I can do that with the warnings::illegalproto pragma, but in that case there is no event to fire the wrapping code. A hook that gets triggered after the compilation of the sub will solve this (this is the approach the signatures pragma uses).
This is not strictly a Moose question, it's just that the discussion started here.
Cheers,
--
Peter
>________________________________
> From: Chris Weyl <[email protected]>
>To: Peter Shangov <[email protected]>
>Cc: Ben Tilly <[email protected]>; Jesse Luehrs <[email protected]>; moose <[email protected]>
>Sent: Thursday, 12 January 2012, 18:06
>Subject: Re: "automatically" wrapping methods.
>
>
>On Thu, Jan 12, 2012 at 9:39 AM, Peter Shangov <[email protected]> wrote:
>
>I am interested specifically in the event captured by Sub::Mutate::when_sub_bodied(). I would like to be able to mess with a sub immediately after it has been compiled, i.e. its prototype has been set, its attributes have been executed, and its body has been defined, but before any code has had an opportunity to invoke it. I imagine the B::Hooks::EndOfScope::on_scope_end() approach would fail e.g. if there is a BEGIN block calling the sub immediately after its definition.
>Is there something in particular you're trying to do here? I'd imagine it's Moose and validation related, as you're asking it in this thread, but without more specifics...
>
>
>
> -Chris--
>Chris Weyl
>Ex astris scientia
>
>
>