Because myglobals: lexicals defined outside any blocks are scoped to their file. The file you do'd was compiled without strictures and created a different, global%config that it populated. Inside your own file, strict is happy, because you cannot see the global %config.