I happened to use a Good Goto (TM) today, which is funny, because just a week ago I posted in this journal my impressions of some chapter of "Code Complete" that spoke exactly about gotos that are allowable.
The goto points to special condition code. Something like this -
sub foo { ... goto undefined_behavior if (something_bad1) ... ... goto undefined_behavior if (something_bad2) ... ... etc ... return undefined_behavior do stuff... return }
Some of the conditions depend on earlier ones' being good, so trying to make it w/o a goto would be a bloody mess of if..elsif . With goto, the code looks clean and easy to understand.
Cool !