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