The last paragraph was the most important, and it wasn't addressed. My fault, I didn't explain myself. Consider
{
package Foo;
sub DOES {
my ($self, $role) = @_;
return 1 if ...;
return $self->SUPER::DOES($role);
}
}
Foo->DOES(...); # Line "A"
UNIVERSAL::DOES('Foo', ...); # Line "B"
Unless DOES does something non-intuitive, line "A" results in an infinite loop.
Unless DOES does something non-intuitive, line "B" doesn't call the overridden DOES.
Do we really want DOES to be that special? Having a function does (which calls DOES when appropriate) would avoid all this complexity.
|