$ perl -Mstrict -Mwarnings -le ' package MyDir::Class; # A class method sub new { my ($class, $args_ref) = @_; return bless $args_ref => $class; } # An instance method sub id { my $self = shift; return $self->{id}; } package MyDir::Class::SubClass; use base qw{MyDir::Class}; # no methods: all functionality is inherited package main; # Create a MyDir::Class instance my $obj = MyDir::Class::->new({id => "X"}); print "Class object: ", $obj; print "Class Name: ", ref $obj; print "Object ID: ", $obj->id(); # Create a MyDir::Class::SubClass instance my $obj_sub = MyDir::Class::SubClass::->new({id => "Y"}); print "Class object: ", $obj_sub; print "Class Name: ", ref $obj_sub; print "Object ID: ", $obj_sub->id(); ' Class object: MyDir::Class=HASH(0x7ffeda002ee8) Class Name: MyDir::Class Object ID: X Class object: MyDir::Class::SubClass=HASH(0x7ffeda029cb0) Class Name: MyDir::Class::SubClass Object ID: Y