package Astro::Observation; use Astro::Observation::Simple; use Astro::Observation::Complex; sub new { my $self = shift; my $class = shift; return Astro::Observation::Simple->new(@_) if 'simple' eq $class; return Astro::Observation::Complex->new(@_) if 'complex' eq $class; return undef; } #### my $obs = Astro::Observation->new("simple",'foo'); my $obc = Astro::Observation->new("complex",'bar');