=head1 NAME

Aspect-Oriented Perl - Aspect-oriented programming in pure Perl

=head1 DESCRIPTION

=head2 Introduction to AOP

Aspect-oriented Programming (AOP) is a programming methodology
developed by Xerox PARC. The basic idea is that in complex class
systems there are certain aspects or behaviors that cannot normally
be expressed in a coherent, concise and precise way. One example
of such aspects are design patterns, which combine various kinds
of classes to produce a common type of behavior.

Aspects in Perl provide:

=over 4

=item *

Dynamic enabling and disabling of aspects at run-time

=item *

Modular aspects for prepackaged functionality

=back

See C<Aspect::Intro> for an introduction to aspect-oriented
programming. See C<Aspect::Overview> for an overview of the modules
and classes that comprise this distribution. See C<Aspect::Ideas>
for ideas on future developments. See C<Aspect::Cookbook> for
aspect-oriented recipes for common situations. See the individual
modules' manpages for information on how to use and implement
aspects.

=head1 LIMITATIONS

=over 4

=item *

Many types of join points and pointcuts remain unimplemented.

=item *

Performance may suffer for aspects affecting a wide range of join
points.

=back

=head1 PREREQUISITES

C<Aspect> requires the following modules, which can be obtained
from CPAN:

  Class::MethodMaker
  Hook::LexWrap
  IO::Scalar

If you install C<Aspect> from the CPAN shell, these modules will,
if necessary, be installed automatically as well.

=head1 INSTALLATION

It's all pure Perl, so just put the .pm files in their appropriate
local Perl subdirectories.

The easiest way to install this distribution is using the standard
build process for Perl modules:

  perl Makefile.PL
  make
  make test
  make install

Or you could use the CPAN shell, as described in the C<CPAN> module
documentation.

=head1 CHANGES AND FUTURE DEVELOPMENT

This C<README> refers to version 0.07. For details of changes,
refer to the file C<Changes>.

Future versions will provide new types of join points, pointcuts
and modular aspects. Stability and performance is also an ongoing
concern. See C<Aspect::Ideas> for an overview of these ideas.

=head1 CHANGES IN VERSION 0.07

=over 4

=item *

Symbols exported from Aspect.pm now don't generate join points.
So I added C<Aspect::import()> and modified C<Aspect::JoinPoint::enum()>
to check for C<%Aspect::exp_syms>.

=back

=head1 AVAILABILITY

C<Aspect> has been uploaded to the CPAN.

=head1 AUTHOR

Marcel GrE<uuml>nauer <marcel.gruenauer@chello.at>

=head1 COPYRIGHT

Copyright 2001 Marcel GrE<uuml>nauer. All rights reserved.

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

=head1 SEE ALSO

Aspect::Intro(3pm), Aspect::Cookbook(3pm), Aspect::Ideas(3pm), Aspect(3pm).

=cut
