Subject: | loading IO modules causes methods to be inserted into other namespaces |
Loading any of the core IO::* modules causes the global IO module to be
loaded, which inserts all kinds of things into the namespaces of various
IO submodules, even if they haven't been loaded yet. They aren't in a
usable state by this point (among other things, @ISA isn't set), but
this thoroughly confuses modules that want to check to see if a module
has been loaded yet (for example, Class::MOP::is_class_loaded). It would
be very helpful if doing "use IO::Handle" would only load symbols into
the IO::Handle namespace.