Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

aspect::advice(3pm) [debian man page]

Aspect::Advice(3pm)					User Contributed Perl Documentation				       Aspect::Advice(3pm)

NAME
Aspect::Advice - Change how Perl code is run at a pointcut SYNOPSIS
# Trace calls to all functions in all MyAccount classes use Aspect; before { print 'Called: '. $_->sub_name; } call qw/^MyAccount::/; # Repeat using the pure object-oriented interface use Aspect::Advice::Before (); use Aspect::Pointcut::Call (); my $advice = Aspect::Advice::Before->new( pointcut => Aspect::Pointcut::Call->new( qr/^MyAccount::/ ), code => sub { print 'called: '. $_->sub_name; }, ); DESCRIPTION
An "advice" in AOP lingo is composed of a condition (known as a Aspect::Pointcut) and some code that will run when that pointcut is true. This code is run before, after, or around the target pointcut depending on the particular advice type declaration used. You do not normally create advice using the constructor. By "use()"ing Aspect, you get five advice declaration subroutines imported. "before" is used to indicate code that should run prior to the function being called. See Aspect::Advice::Before for more information. "after" is used to indicate code that should run following the function being called, regardless of whether it returns normally or throws an exception. See Aspect::Advice::After for more information. "around" is used to take deeper control of the call and gives you your own lexical scope between the caller and callee, with a specific "proceed" call required in your code to execute the target function. See Aspect::Advice::Around for more information. When the advice code is called, it is provided with an Advice::Point object which describes the context of the call to the target function, and allows you to change it. This parameter is provided both via the topic variable $_ (since version 0.90) and additionally as the first parameter to the advice code (which may be deprecated at some point in the future). If you are creating "advice" objects directly via the OO interface, you should never use this class directly but instead use the class of the particular type of advice you want to create. AUTHORS
Adam Kennedy <adamk@cpan.org> Marcel Gruenauer <marcel@cpan.org> Ran Eilam <eilara@cpan.org> COPYRIGHT
Copyright 2001 by Marcel Gruenauer Some parts copyright 2009 - 2012 Adam Kennedy. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.14.2 2012-02-01 Aspect::Advice(3pm)

Check Out this Related Man Page

Aspect::Advice::Around(3pm)				User Contributed Perl Documentation			       Aspect::Advice::Around(3pm)

NAME
Aspect::Advice::Around - Execute code both before and after a function SYNOPSIS
use Aspect; around { # Trace all calls to your module print STDERR "Called my function " . $_->sub_name . " "; # Lexically alter a global for this function local $MyModule::MAXSIZE = 1000; # Continue and execute the function $_->run_original; # Suppress exceptions for the call $_->return_value(1) if $_->exception; } call qr/^ MyModule::w+ $/; DESCRIPTION
The "around" advice type is used to execute code on either side of a function, allowing deep and precise control of how the function will be called when none of the other advice types are good enough. Using "around" advice is also critical if you want to lexically alter the environment in which the call will be made (as in the example above where a global variable is temporarily changed). This advice type is also the most computationally expensive to run, so if your problem can be solved with the use of a different advice type, particularly "before", you should use that instead. Please note that unlike the other advice types, your code in "around" is required to trigger the execution of the target function yourself with the "proceed" method. If you do not "proceed" and also do not set either a "return_value" or "exception", the function call will return "undef" in scalar context or the null list "()" in list context. AUTHORS
Adam Kennedy <adamk@cpan.org> COPYRIGHT AND LICENSE
Copyright 2010 Adam Kennedy. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.14.2 2012-02-01 Aspect::Advice::Around(3pm)
Man Page