This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[PATCH} typo fix in Carp/Heavy.pm
[perl5.git] / lib / NEXT / README
CommitLineData
55a1c97c 1==============================================================================
13021a80 2 Release of version 0.50 of NEXT
55a1c97c
JH
3==============================================================================
4
5
6NAME
7
8 NEXT - Pseudo class for method redispatch
9
10
11DESCRIPTION
12
13 NEXT.pm adds a pseudoclass named C<NEXT> to any program that
14 uses it. If a method C<m> calls C<$self->NEXT::m()>, the call to
15 C<m> is redispatched as if the calling method had not originally
16 been found.
17
18 In other words, a call to C<$self->NEXT::m()> resumes the
19 depth-first, left-to-right search of parent classes that
20 resulted in the original call to C<m>.
21
22 Note that this is not the same thing as C<$self->SUPER::m()>, which
23 begins a new dispatch that is restricted to searching the ancestors
24 of the current class. C<$self->NEXT::m()> can backtrack past
25 the current class -- to look for a suitable method in other
26 ancestors of C<$self> -- whereas C<$self->SUPER::m()> cannot.
27
d1be9408 28 A particularly interesting use of redispatch is in
55a1c97c
JH
29 C<AUTOLOAD>'ed methods. If such a method determines that it is
30 not able to handle a particular call, it may choose to
31 redispatch that call, in the hope that some other C<AUTOLOAD>
32 (above it, or to its left) might do better.
33
13021a80
JH
34 The module also allows you to specify that multiply inherited
35 methods should only be redispatched once, and what should
36 happen if no redispatch is possible.
55a1c97c
JH
37
38
39AUTHOR
40
41 Damian Conway (damian@conway.org)
42
43
44COPYRIGHT
45
46 Copyright (c) 2000-2001, Damian Conway. All Rights Reserved.
47 This module is free software. It may be used, redistributed
48 and/or modified under the same terms as Perl itself.
49
50
51==============================================================================
52
13021a80
JH
53CHANGES IN VERSION 0.50
54
55
56 - Added a $VERSION (oops!)
57
58 - Fixed handling of diamond patterns (thanks Paul)
59
60 - Added NEXT::ACTUAL to require existence of next method (thanks Paul)
55a1c97c 61
13021a80
JH
62 - Added NEXT::UNSEEN to avoid calling multiply inherited
63 methods twice (thanks Paul)
55a1c97c 64
13021a80
JH
65 - Re-fixed setting of $AUTOLOAD in NEXT'd AUTOLOADS to be
66 consistent with more useful SUPER:: behaviour
55a1c97c 67
13021a80 68 - Corified tests
55a1c97c
JH
69
70
71==============================================================================
72
73AVAILABILITY
74
75NEXT has been uploaded to the CPAN
76and is also available from:
77
78 http://www.csse.monash.edu.au/~damian/CPAN/NEXT.tar.gz
79
80==============================================================================