in reply to Twofer: 'use base' vs 'use'; and SuperSearch

As others have pointed out, use base makes the named module a superclass of the current package (and so you should really be writing an OO module in that case).

I'd just add that in OO terms, if you pull in a package with use base then you are declaring an is-a relationship. Your package is an Exporter, with some additional custom behaviour.

If you pull in a module in order to make use of the facilities it provides, it is much more like a has-a relationship. If I write an OO module and use XML::LibXML it is quite likely that my object will have some object's from that module as data members.

This isn't 100%, since you might make use of a module's facilities purely within one method and never save off a data member (e.g. use Dumper), but it can be a helpful way of thinking about it.