package LookupFactory; use base qw( UserSource ); sub init_lookup { # run config based upon type of source requested } package UserSource; sub get { # get the type of user source (lookup, database, whatever) } package User sub new { # get a source based upon whatever the User config says to get } package App $user = User->new(); $user->info() # look ma! no config!