package Factory; use base qw( Class::Factory ); use Module_1; use Module_2; __PACKAGE__->add_factory_type('1.0' => 'Module_1'); __PACKAGE__->add_factory_type('2.0' => 'Module_2'); 1; #### package Module_1; sub new { bless {}, shift } sub init { shift } sub version { '1.0' } 1; #### package Module_2; sub new { bless {}, shift } sub init { shift } sub version { '2.0' } 1; #### #!/usr/bin/perl -l use Factory; print $_->version for Factory->new('1.0'), Factory->new('2.0'), ;