point of view, all namespaces always exist. In fact, all package variables exist as well - the implementation just delays creating the internal bookkeeping associated with variables until they're actually encountered. The keyword
doesn't create much (just an entry in the stash, if existing already); it's main effect is compile time: it just sets the default package name non-lexical, not-special names live in until the end of the current scope, or the next package statement - whatever comes first.