package src::bo::behaviour::FlyBehaviour; use strict; use warnings; use Carp; sub new { my $class = shift; my $self = { }; my $closure = sub { my $field = shift; if (@_) { $self->{$field} = shift; } return $self->{$field}; }; bless ($closure, $class); return $closure; } sub fly() { confess "FlyBehaviour is an abstract base class"; } 1;