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

NAME

Getopt::EX::Loader - RC/Module loader

SYNOPSIS

  use Getopt::EX::Loader;

  my $loader = Getopt::EX::Loader->new(
      BASECLASS => 'App::example',
      );

  $loader->load_file("$ENV{HOME}/.examplerc");

  $loader->deal_with(\@ARGV);

  my $parser = Getopt::Long::Parser->new;
  $parser->getoptions(... , $loader->builtins);
    or
  $parser->getoptions(\%hash, ... , $loader->hashed_builtins(\%hash));

DESCRIPTION

This is the main interface to use Getopt::EX modules. You can create loader object, load user defined rc file, load modules specified by command arguments, substitute user defined option and insert default options defined in rc file or modules, get module defined built-in option definition for option parser.

Most of work is done in deal_with method. It parses command arguments and load modules specified by -M option by default. Then it scans options and substitute them according to the definitions in rc file or modules. If RC and modules defines default options, they are inserted to the arguments.

Module can define built-in options which should be handled option parser. They can be taken by builtins method, so you should give them to option parser.

If option values are stored in a hash, use hashed_builtins with the hash reference. Actually, builtins works even for hash storage in the current version of Getopt::Long module, but it is not documented.

If App::example is given as a BASECLASS of the loader object, it is prepended to all module names. So command line

    % example -Mfoo

will load App::example::foo module.

In this case, if module App::example::default exists, it is loaded automatically without explicit indication. Default module can be used just like a startup RC file.

METHODS

configure name => value, ...
RCFILE

Define the name of startup file.

BASECLASS

Define the base class for user defined module. Use array reference to specify multiple base classes; they are tried to be loaded in order.

MODULE_OPT

Define the module option string. String -M is set by default.

DEFAULT

Define default module name. String default is set by default. Set undef if you don't want load any default module.

PARSE_MODULE_OPT

Default true, and parse module options given to deal_with method. When disabled, module option in command line argument is not processed, but module option given in rc or module files are still effective.

IGNORE_NO_MODULE

Default false, and process dies when given module was not found on the system. When set true, program ignores not-existing module and stop parsing at the point leaving the argument untouched.

buckets

Return loaded Getopt::EX::Module object list.

load_file

Load specified file.

load_module

Load specified module.