http://qs321.pair.com?node_id=11116931


in reply to How to sub class-es

Check out Conway's Object Oriented Perl. And for God's sake I hope you never find the time to learn Moose or Moo.
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 Rob +o::Feet }, shift } 1; package main; my $robo = Robo->new(); $robo->{Feet}->walk(); $robo->{Arm}->pick( "Apple" );
If you want to have walk and pick methods attached to Robo instances, then you have to create these as subroutines in package Robo.
sub walk { my $self = shift; $self->{Feet}->walk(); return; } sub pick { my ($self, $thing) = @_; return $self->{Arm}->pick( $thing ); }
Maybe that's what you're trying to do with AUTOLOAD, but my advice is to do it manually before you start trying to fold in methods from member classes using AUTOLOAD.

Also, new X is not idiomatic and I am surprised still works in some cases. Do X->new(..) and don't look back.