All pastes #246021 Raw Edit

Stuff

public text v1 · immutable
#246021 ·published 2006-11-11 19:35 UTC
rendered paste body
#Starts all the addon modules
sub start {

    #Get a list of modules that we have loaded
    my $modules = load_modules( "PMBot::Listener", "PMBot::Processor" );

    #print Dumper($modules);

    #Start them
    foreach my $category ( values %$modules ) {
        foreach my $module (@$category) {
            $module->start();
        }
    }
}

#Dynamic module loader for listeners
sub load_modules {
    my @modules_to_load = @_;
    my %modules;
    my @module_paths;

    #print Dumper(@modules_to_load);

    #Construct a full path to the .pm file(s)
    #Also populate the hash with data regarding the modules
    foreach my $inc_path (@INC) {
        foreach my $module_name (@modules_to_load) {

            my $path = $module_name;
            $path =~ s/::/\//;
            my $full_path = $inc_path . "/" . $path . "/";
            if ( -e $full_path ) {
                foreach my $module ( glob "$full_path*.pm" ) {
                    require $module;
                    my $full_module_name = $module_name . "::"
                        . ( fileparse( $module, ".pm" ) );
                    push @{ $modules{$module_name} }, ($full_module_name);
                }

            }

        }
    }
    return \%modules;
}