#!/usr/bin/perl package Foo; use Class::FIOC; use strict; sub new { my $class = shift; my $foo_thing = shift; my $subclass = shift || 0; methods { foo_thing=>sub { print "My foo_thing=$foo_thing\n"; } },$subclass; } #!/usr/bin/perl package Bar; use Foo; our @ISA qw(Foo); use Class::FIOC; use strict; sub new { my $class = shift; my $bar_thing = shift; my $self = methods { bar_thing=>sub { print "My bar_thing=$bar_thing\n"; } } return Foo->new("Hello",$self); }