Provided by: libaspect-perl_1.04-1_all bug


       Aspect::Advice - Change how Perl code is run at a pointcut


         # 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;


       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


       Adam Kennedy <>

       Marcel Gruenauer <>

       Ran Eilam <>


       Copyright 2001 by Marcel Gruenauer

       Some parts copyright 2009 - 2013 Adam Kennedy.

       This library is free software; you can redistribute it and/or modify it under the same
       terms as Perl itself.