If your intent is to ensure that increment calls add in the same package, why not use:
sub increment {
my $self = shift;
&add($self, number => 1);
}
Use subroutine calls when you want to create your own explicit binding, use -> notation when you desire runtime binding of the message.
Of course, it would be my opinion that it is particularly bad form for a child class to re-implement a method in a manner that is not backward compatible - it's a violation of the contract as far as I'm concerned.
--Toby Ovod-Everett