sub initial_state { ... goto &some_state; } sub some_state { ... if ( ... ) { goto &some_state; } else { goto &final_state; } } sub final_state { ... return; } initial_state();