#### a driver for the car { package Driver; sub new { my $class = shift; my $vars = {}; $vars->{ALERTNESS} = 0; $vars->{STATE} = dstatenorm->new(); bless ($vars, $class); return $vars; } sub alertness { my $vars = shift; my $state = $vars->{STATE}; if(@_) { $vars->{ALERTNESS} = shift; } return $state->alertness( $vars->{ALERTNESS} ); } 1; } #### driver state normal { package dstatenorm; sub new { my $class = shift; my $vars = {}; $vars->{"NAME"} = "Normal"; bless ($vars, $class); return $vars; } sub alertness ($) { my $curAlertness = shift; return $curAlertness; } 1; }