package Robo; use strict; use warnings; sub new { bless { Arm => Robo::Arm->new(), # 'Arm' points to instance of Robo::Arm Feet => Robo::Feet->new(), #'Feet' points to instance of Robo::Feet }, shift } 1; package main; my $robo = Robo->new(); $robo->{Feet}->walk(); $robo->{Arm}->pick( "Apple" );