in reply to Scope of a Module?

You cannot do use Module and assume it to have only lexical effects. use is handled at compile time. You can do what you want at run time though, by using require. Something like:
if ($arg is a FILEHANDLE) { require DBI::Pretty::File; %hash = DBI::Pretty::File::read_stuff_from_file ($arg); } elsif ($arg is a XML datastream) { require DBI::Pretty::XML; %hash = DBI::Pretty::XML::read_stuff_from_xml ($arg); }

I do get the feeling you are mixing OOP with procedurial coding and getting the worst of two worlds. I would either make $arg an object so I could do $arg -> read_stuff, or I'd make a function, possible in a separate file (and module), so that I could do %hash = read_stuff ($arg) and put all the reading stuff from DBI::Pretty::File and DBI::Pretty::XML and other modules in there.

-- Abigail