Looking for a base module that can automatically load sub modules

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View


I am looking for a module, to make a base class module, that
automatically loads sub class modules.

Usually, to make a new Digest::MD5.pm module instance, you type

$inst = Digest::MD5->new(@args);

But, the Digest.pm module, let us type

$inst = Digest->MD5(@args);
$inst = Digest('MD5' => @args);

to do the same thing.

I want a module that can generate a module like Digest.pm.

I already made a module that can do it( let us call it
Class::AutoSubClass.pm), but there might be a similar module( but
scripted more elegantly ) in CPAN. Please tell me if there is.

The module I made( Class::AutoSubClass.pm )is below.

# Class/AutoSubClass.pm
package Class::AutoSubClass;

use strict;
use warnings;
use Carp;

sub new(@){
    my $sBaseName = shift;
    my $sName = shift;
    my $rhDefaultDats = shift || {};
    return bless $rhDefaultDats if !defined $sName or $sName eq '';
    my $sClassName = $sBaseName.'::'.$sName;
    eval "require $sClassName";
    die if $@;
    no strict 'refs';
    return $sClassName->new(@_);
1; # end Class/AutoSubClass.pm

And you use it like this.

# Wiki/Handler.pm
package Wiki::Handler;

use strict;
use warnings;
use Carp;

use Class::AutoSubClass;

sub new(@){
    return Class::AutoSubClass->new('Wiki::Handler',shift,@_);

1; # end Wiki/Handler.pm

By using this module, the new Wiki::Handler::HTMLFragment.pm object
can be generated like

$htmlf = Wiki::Handler->new('HTMLFragment');


Re: Looking for a base module that can automatically load sub modules

xor wrote:
Quoted text here. Click to load it
How about Module::Pluggable?



Site Timeline