in reply to Re^2: Confusion about BEGIN block
in thread Confusion about BEGIN block

egads! no wonder I'm confused

It seems you are overthinking this a great deal. The reason strict complains is simple -- it scans the code before anything is executed, and looks for proper scoping. If there is a variable used before it is scoped, strict complains. End of story. Strict does not unravel BEGIN blocks and figure out what will be executed when, it simply looks at the "physical" location of things in the code.