Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re: Intercept all object method calls with Moose

by tobyink (Canon)
on Jun 30, 2012 at 07:10 UTC ( [id://979212]=note: print w/replies, xml ) Need Help??


in reply to Intercept all object method calls with Moose

It's not the db_accessor method call that is dying, but the methodA accessor.

What you need to do is subclass My::DEF...

package My::DEF::JohnMacLane; # because it doesn't die use Moose; extends 'My::DEF'; my @make_immortal = qw( methodA methodB ); foreach my $meth (@make_immortal) { around $meth => sub { my ($orig, $self, @args) = @_; return eval { $self->$orig(@args) }; }; } 1;

The other possibility is to write a Shield class that sits in between My::ABC and My::DEF. I'm in a rush now, but I may update this post later with an example...

perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Replies are listed 'Best First'.
Re^2: Intercept all object method calls with Moose
by elTriberium (Friar) on Jul 02, 2012 at 17:41 UTC

    OK, thanks, I understand that the methodA accessor call was dying, I was only wondering whether I could somehow easily intercept ALL method calls of an attribute in the calling class. In your example (which is helpful, thanks for that), it's not the calling class, but the called class which intercepts the methods.

    I'll have to think about if I want to use it this way, it's effectively a new derived class just for this. Maybe just handling it manually in the calling class (by putting an eval around each method call) is the better way to go. Thanks for your input again!

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://979212]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (4)
As of 2024-03-29 11:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found