in reply to sub classing best practice

Don't do that. You're hardcoding the subclass's name in the superclass, so now you can only handle 1 subclass. Also, superclasses should NOT know about subclasses. One obvious solution to this problem is to use a seperate factory object to create instances. Doing it this way will also make sure you only pass the relevant attributes to the class constructor.
package ClassFactory; sub new { my ($class,%auth_vars) = @_; return bless \%auth_vars,$class; } sub create { my ($self,$class) = @_; return $class->new(%$self); }
Which you can then use as follows:
my $factory = Class::Factory->new( auth vars ); my $obj = $factory->create("Class"); my $subobj = $factory->create("Class::SubClass");