logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Badger - Perl Application Programming Toolkit

Author

       Andy Wardley  <http://wardley.org/>.

       With contributions from Brad Bowman and Michael Grubb, and code, inspiration and insight borrowed from
       many other module authors.

Bugs

       Please report bugs or (preferably) send pull requests to merge bug fixes via the github repository:
       <https://github.com/abw/Badger>.

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 foundationclasses 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.

Name

       Badger - Perl Application Programming Toolkit

See Also

       <http://badgerpower.com/>

       <https://github.com/abw/Badger>

perl v5.36.0                                       2023-08-28                                        Badger(3pm)

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';

Todo

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

See Also