Changes for version 0.37

  • Added support for "Aspect ':legacy'", which will cause the Aspect module to export functions with their original behaviours. Only the original aspect/before/after/call/cflow functions are exported and after() advice applies the same behaviour as the equivalent new-API advice function after_returning().
  • To prevent hassles with Exporter (and since we need Sub::Install anyway to implement :legacy) replace all uses of Exporter with a trivial hand-rolled equivalent using Sub::Install.
  • Added the Aspect::Pointcut::If pointcut to match Java's equivalent if PointCut primitive. Unfortunately, since it's going to be a bit to hard to actually use "if" in a function, we will use "if_true" instead.
  • Added Sub::Uplevel to the list of untouchables to prevent infinite circular loops.

Modules

Aspect-Oriented Programming (AOP) for Perl
Change how Perl code is run at a pointcut
a pointcut context for advice code
Observer pattern with events
A singleton aspect
A wormhole between call frames
Base class for reusable aspects
pointcut base class
Logical 'and' operation pointcut
Call pointcut
Cflow pointcut
Logical 'not' operation pointcut
Logical 'or' operation pointcut

Provides

in lib/Aspect/Advice/After.pm
in lib/Aspect/Advice/AfterReturning.pm
in lib/Aspect/Advice/AfterThrowing.pm
in lib/Aspect/Advice/Around.pm
in lib/Aspect/Advice/Before.pm
in lib/Aspect/Library/Listenable/Event.pm
in lib/Aspect/Pointcut/If.pm