On Sat, Oct 06, 2007 at 11:25:25AM +0100, Andy Armstrong wrote:
>>
>>> But I like neither the name nor the interface. How about this:
>>>
>>>     package BigApp::Report;
>>>     use subclass qw(..::Utils Create Publish);
>>>     # loads BigApp::Utils, BigApp::Report::Create, 
>>> BigApp::Report::Publish
>>
>> "subclass" would imply more OO semantic than I'd like, as the module just 
>> loads others modules, but I agree it's a better name than "relative" and I 
>> can't find a better one.
>> Also agreeing for the API change. I know I was pondering about using ".." 
>> but can't remember why I didn't.
>
> Would it also do
>
> use relative [to => 'My::Big::Namespace'] => qw( This That Munger::Fast 
> Munger::Precise );
>

What's wrong about this?

    eval "use My::Big::Namespace::$_;"
        for qw( This That Munger::Fast Munger::Precise );
    die $@ if $@;

Which you can wrap in a BEGIN block if you really want the loading to
happen at compile time...

And of course, you can tone it down to a single eval "", if you don't
like those:

    BEGIN {
        my $code = join '',
            map {"use My::Big::Namespace::$_;"}
            qw( This That Munger::Fast Munger::Precise );
        eval $code;
        die $@ if $@;
    }

And I bet this works with 5.000. ;-)

-- 
 Philippe Bruhat (BooK)

 Trust only in incompetence. You will never be disappointed.
                                    (Moral from Groo The Wanderer #16 (Epic))

Reply via email to