in reply to method aliases with goto(&NAME)
Won't somebody please think of the children?!?!.
package Parent { sub legacy_method { my ($self, @args) = @_; return $self->current_method(@args); } sub current_method { return 1; } } package Child { use base 'Parent'; sub current_method { return 2; } } Child->legacy_method; # returns 2
If you swap in your goto implementation of the legacy method, then calling Child->legacy_method returns 1.
Here's an alternative safer version using goto...
sub legacy_method { my $next = $_[0]->can('current_method'); goto $next; }
See also http://tvtropes.org/pmwiki/pmwiki.php/Main/ThinkOfTheChildren.
use Moops; class Cow :rw { has name => (default => 'Ermintrude') }; say Cow->new->name
In Section
Seekers of Perl Wisdom