Exposing my ignorance, wanting help with use!

Peter Hickman peter.hickman at semantico.com
Wed Feb 14 14:30:07 GMT 2007

Unfortunately my fount of all things Perl is away today and as I look 
around the office I see that I am surrounded by Java programmers. So no 
help there, I'll just have to expose my ignorance to the whole world.

I have this little project I am working on that involves the following code:

    my %handlers = $t->get_handlers();

    foreach my $handler ( keys %handlers ) {
        my $class  = $handlers{$handler}{class};
        my $config = $handlers{$handler}{config};
        eval {
            require $class;
            $self->{dispatcher}->add_dispatcher( $handler, 
$class->new($config) );

        die "Error loading dispatcher '$class': $@\n" if $@;

The problem is the require in the eval. When it is called with class set 
to, say, Stupid::Dispatcher::XSQL I get the following error:

Error loading dispatcher 'Stupid::Dispatcher::XSQL': Can't locate 
Stupid::Dispatcher::XSQL in @INC (@INC contains: /sw/lib/perl5 
/Library/Perl/5.8.6/darwin-thread-multi-2level /Library/Perl/5.8.6 
/Library/Perl /Network/Library/Perl/5.8.6/darwin-thread-multi-2level 
/Network/Library/Perl/5.8.6 /Network/Library/Perl 
/Library/Perl/5.8.1/darwin-thread-multi-2level /Library/Perl/5.8.1 .) at 
/Library/Perl/5.8.6/Stupid/Control.pm line 35.

Here's the rub, the file is located at:

[stupid]$ ll /Library/Perl/5.8.6/Stupid/Dispatcher/XSQL.pm
-r--r--r--   1 root  admin  1520 Feb 14 13:50 

Which you can see is in @INC. I can -M the file and even perl -e 
'require Stupid::Dispatcher::XSQL; print 1;' the damn thing but the 
above code will not work. Even sticking a use Stupid::Dispatcher::XSQL 
in the code does not help.

Help. I do not understand what is going on.

Peter Hickman.

Semantico, Lees House, 21-23 Dyke Road, Brighton BN1 3FE
t: 01273 722222
f: 01273 723232
e: peter.hickman at semantico.com
w: www.semantico.com

More information about the london.pm mailing list