in reply to Scope, package, and 'my' variables

Without the curlies you've got multiple declarations of the same name in the same scope (the top level file lexical scope); with them you've got separate declarations in separate lexical scopes (the blocks) and they're not visible outside the containing scope. This has nothing to do with what the current package at declaration time. Lexical variables live outside the global (package) namespaces.

Update: See Coping with Scoping.