sub toggle_door { state $transition = { qw(Open Closed Closed Open) }; $_[0] // die 'undefined door state'; exists $transition->{$_[0]} or die qq{unknown door state '$_[0]'}; return $_[0] = $transition->{$_[0]}; }