That's not quite right, globals are still globals even after Sub::Sealed because you only fixup the function's lexicals. In fact, even your lexicals are now globals after being sealed. So this effectively removes lexicals from your function and sneakily replaces them with globals.