in reply to Namespace Pollution

In short, I never (well, except for a few accidents) import anything into my namespace. I always simply do 'require myModule;'. If it's an OO module, well I neither lose nor gain. If it's a non OO module, then I have absolutely no namespace pollution while still being able to use all the features of the module. In specific I call every method as fully qualified, MyModule::foo(); as I feel this allows me to keep track of where the various functions I'm using are.

Replies are listed 'Best First'.
Re: Re: Namespace Pollution
by Jenda (Abbot) on May 06, 2003 at 12:34 UTC

    1. If the module in question inherits its import() subroutine from the Exporter.pm you are right you do not lose anything. If on the other hand the module has its own import(), you may get a nasty surprise. The module may expect it's import() to be called.

    2. While MyModule::foo(); doesn't sound too bad, but imagine you'd have to prepend each and every constant with the package name:

    my $Array = Win32::OLE::Variant->new(VT_ARRAY|VT_R8, [1,2], 2); vs. my $Array = Win32::OLE::Variant->new(Win32::OLE::Variant::VT_ARRAY|Win +32::OLE::Variant::VT_R8, [1,2], 2);
    I think you are exagerating. Also ... keep in mind that the more text you write, the more likely it is that you make a mistake. It's more likely to mistype Win32::FileOp::Delete(... than Delete(....

    Jenda
    Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
       -- Rick Osborne

    Edit by castaway: Closed small tag in signature