Also, if you class covers classes and objects, make some. Your script will look nicer and be more functional.
"Yeah, uh, make some classes, 'cause, like, they're better."
There are reasons to use object-oriented programming. "Because you can" isn't one. "Look nicer and be more functional" is so context-free as to be meaningless. If you're going to say something like this you should at least have enough of a grasp to explain
why it would look nicer. (As for "be more functional"--that's simply nonsensical.
And this is probably bleedingly obvious to almost everyone except you, but it bears repeating:
this isn't script programming.
While I agree that breaks can be ugly (can easily make things hard to follow), in this case it makes sense.
It's immediately obvious what loop is being broken out of, and why. Add a comment on the line with the loop's closing brace to make scanning easier and you're all set.
For some reason, I see it as similar to throwing an exception: an unusual case that disrupts the normal flow of the program.
Breaks aren't exceptional conditions, though, where exceptions...well...are. The rest of your logic seems very sound. (Any time I'm subjected to C++ I really miss named breaks.)