in reply to Loop controls transcends scope?

It's not violating scope. last/next/redo/goto respect dynamic scope (determined by runtime call stack) not lexical scope. Think of it as similar to the difference between local() and my().