package Client; sub CreateInvoiceCalculator { my $self = shift; return (qw/DefaultClientIC UnusualClientIC VeryStrangeClientIC MartianClientIC/[$self->{client_type}]) -> new; } # ... my $ic = $client->CreateInvoiceCalculator;