制御構造はスコープを作らない
while や for がスコープを作らないのに対し、loop や each などのイテレータはスコープを作ります。
な、なんですとー!コード見直さなきゃ!
重複したループを抜けるには、break ではなく catch/throw を使用します。
catch(:last) { while true (1..5).each{|x| throw :last if x == 3 print "#{x}\n" } end }
参考になる +1…まあそもそも、ネストするループから抜けないといけないというコードの構造に問題がありそうな気もするけど。