Is there a way to "use" a single file that in turn uses multiple others in Perl?

module, perl

Solution

Something like this should work:

http://mail.pm.org/pipermail/chicago-talk/2008-March/004829.html

Basically, create your package with lots of modules:

package Lots::Of::Modules;
use strict; # strictly optional, really

# These are the modules we want everywhere we say "use Lots::Of::Modules".
# Any exports are re-imported to the module that says "use Lots::Of::Modules"
use Carp qw/confess cluck/;
use Path::Class qw/file dir/;
...

sub import {
    my $caller = caller;
    my $class  = shift;

    no strict;
    *{ $caller. '::'. $_ } = \*{ $class. '::'. $_ }
       for grep { !/(?:BEGIN|import)/ } keys %{ $class. '::' };
}

Then use Lots::Of::Modules elsewhere;

use Lots::Of::Modules;
confess 'OH NOES';

Problem

I'd like to create several modules that will be used in nearly all scripts and modules in my project. These could be used in each of my scripts like so: ``` #!/usr/bin/perl use Foo::Bar; use Foo::Baz; use Foo::Qux; use Foo::Quux; # Potentially many more. ``` Is it possible to move all these use statements to a new module `Foo::Corge` and then only have to `use Foo::Corge` in each of my scripts and modules?

Original source