No, a module must return a true value. Many people don't realize that when a module is loaded with use, its code is actually run. Of course, if the module just contains subs, little code is run; but most modules assign a version number, set @ISA or @EXPORT/@EXPORT_OK. All these assignments wouldn't happen if the code in the module wasn't run.