The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Badger - Perl Application Programming Toolkit

SYNOPSIS

    use Badger
        lib        => '../lib',     # like 'use lib' but relative to $Bin
        Filesystem => 'File Dir',   # import from Badger::Filesystem

    use Badger 
        Filesystem => 'Dir File',
        Utils      => 'numlike textlike',
        Constants  => 'ARRAY HASH',
        Codecs     => [codec => 'base64'];

This is equivalent to:

    use Badger;
    use Badger::Filesystem 'Dir File';
    use Badger::Utils      'numlike textlike',
    use Badger::Constants  'ARRAY HASH',
    use Badger::Codecs      codec => 'base64';
        

DESCRIPTION

The Badger toolkit is a collection of Perl modules designed to simplify the process of building object-oriented Perl applications. It provides a set of foundation classes upon which you can quickly build robust and reliable systems that are simple, sexy and scalable. See Badger::Intro for further information.

The Badger module is a front-end to other Badger modules. You can use it to import any of the exportable items from any other Badger module. Simply specify the module name, minus the Badger:: prefix as a load option.

For example:

    use Badger 
        Filesystem => 'Dir File',
        Utils      => 'numlike textlike',
        Constants  => 'ARRAY HASH',
        Codecs     => [codec => 'base64'];

This is equivalent to:

    use Badger;
    use Badger::Filesystem 'Dir File';
    use Badger::Utils      'numlike textlike',
    use Badger::Constants  'ARRAY HASH',
    use Badger::Codecs      codec => 'base64';

Note that multiple arguments for a module should be defined as a list reference.

    use Badger 
        ...etc...
        Codecs => [codec => 'base64'];

This is equivalent to:

    use Badger::Codecs [codec => 'base64'];

Which is also equivalent to:

    use Badger::Codecs codec => 'base64';

EXPORT HOOKS

The Badger module can import items from any other Badger::* module, as shown in the examples above. The following export hook is also provided.

lib

This performs the same task as use lib in adding a directory to your @INC module include path. However, there are two differences. First, you can specify a directory relative to the directory in which the script exists.

    use Badger lib => '../perl/lib';

For example, consider a directory layout like this:

    my_project/
        bin/
            example_script.pl
        perl/
            lib/
                My/
                    Module.pm
            t/
                my_module.t

The my_project/example_script.pl can be written like so:

    #!/usr/bin/perl
    
    use Badger lib => '../perl/lib';
    use My::Module;
    
    # your code here...

This adds my_project/perl/lib to the include path so that the My::Module module can be correctly located. It is equivalent to the following code using the FindBin module.

    #!/usr/bin/perl
    
    use FindBin '$Bin';
    use lib "$Bin/../perl/lib";
    use My::Module;

METHODS

hub()

Returns a Badger::Hub object.

codec()

Delegates to the Badger::Hub codec() method to return a Badger::Codec object.

    my $base64  = Badger->codec('base64');
    my $encoded = $base64->encode($uncoded);
    my $decoded = $base64->decode($encoded);

config()

Delegates to the Badger::Hub codec() method to return a Badger::Config object. This is still experimental.

TODO

Other methods like codec() to access different Badger modules. These should be generated dynamically on demand.

AUTHOR

Andy Wardley http://wardley.org/

COPYRIGHT

Copyright (C) 1996-2009 Andy Wardley. All Rights Reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

http://badgerpower.com/