in reply to Not errors but possible bugs

Neither of these are actual bugs in Perl, although the behavior can be counter-intuitive.

use is a compile-time directive. It has no meaning at runtime, so you cannot assign it a label. If you want to conditionally load a module at runtime, you should use require and import.

A do BLOCK with a while after it is still just a do BLOCK. Remember that while as a statement modifier was added later; do BLOCK while EXPR is just another use of while as a statement modifier and has no extra meaning in Perl.