{ package Point; use Class::Spiffy -base; field 'x'; field 'y'; } { package Circle; use base qw(Point); field 'r'; } my $p1 = Point->new(x => 8, y => -5); my $c1 = Circle->new(r => 4); my $c2 = Circle->new(x => 1, y => 2, r => 3); use Data::Dumper; say Dumper $p1; say Dumper $c1; say Dumper $c2;