my $x = My->new(source=>"xml"); my $y = My->new(source=>"json"); #### package My::XML; use My; our @ISA = qw[My]; sub init {...} 1; package My::JSON; use My; our @ISA = qw[My]; sub init {...} 1; package My; sub new { my $class = shift; my $self = bless {}, $class; $self->init; $self; } 1; package main; use My::XML; use My::JSON; my $x = My::XML->new; my $y = My::JSON->new;