Badger3pm
Perl application programming toolkit
Usage
use Badgerlib => '../lib', # like 'use lib' but relative to $BinFilesystem => 'File Dir', # import from Badger::Filesystemuse BadgerFilesystem => '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';
Overview
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 BadgerFilesystem => '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.plperl/lib/My/Module.pmt/my_module.t
The my_project/example_script.pl can be written like so:
#!/usr/bin/perluse 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/perluse 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.