Venus::Cli

Cli Class

Cli Class for Perl 5

method: args method: argument method: argument_choice method: argument_choices method: argument_count method: argument_default method: argument_errors method: argument_help method: argument_label method: argument_list method: argument_multiples method: argument_name method: argument_names method: argument_prompt method: argument_range method: argument_required method: argument_type method: argument_validate method: argument_value method: argument_wants method: assigned_arguments method: assigned_options method: boolean method: choice method: choice_argument method: choice_count method: choice_default method: choice_errors method: choice_help method: choice_label method: choice_list method: choice_multiples method: choice_name method: choice_names method: choice_prompt method: choice_range method: choice_required method: choice_type method: choice_validate method: choice_value method: choice_wants method: command method: dispatch method: exit method: fail method: float method: has_input method: has_input_arguments method: has_input_options method: has_output method: has_output_debug_events method: has_output_error_events method: has_output_fatal_events method: has_output_info_events method: has_output_trace_events method: has_output_warn_events method: help method: input method: input_argument_count method: input_argument_list method: input_arguments method: input_arguments_defined method: input_arguments_defined_count method: input_arguments_defined_list method: input_option_count method: input_option_list method: input_options method: input_options_defined method: input_options_defined_count method: input_options_defined_list method: lines method: log method: log_debug method: log_error method: log_events method: log_fatal method: log_flush method: log_handler method: log_info method: log_level method: log_trace method: log_warn method: multiple method: new method: no_input method: no_input_arguments method: no_input_options method: no_output method: no_output_debug_events method: no_output_error_events method: no_output_fatal_events method: no_output_info_events method: no_output_trace_events method: no_output_warn_events method: number method: okay method: option method: option_aliases method: option_count method: option_default method: option_errors method: option_help method: option_label method: option_list method: option_multiples method: option_name method: option_names method: option_prompt method: option_range method: option_required method: option_type method: option_validate method: option_value method: option_wants method: optional method: opts method: output method: output_debug_events method: output_error_events method: output_fatal_events method: output_info_events method: output_trace_events method: output_warn_events method: parse method: parse_specification method: parsed method: parsed_arguments method: parsed_options method: pass method: reorder method: reorder_arguments method: reorder_choices method: reorder_options method: reorder_routes method: route method: route_argument method: route_choice method: route_count method: route_handler method: route_help method: route_label method: route_list method: route_name method: route_names method: route_range method: required method: reset method: single method: spec method: string method: usage method: usage_argument_default method: usage_argument_help method: usage_argument_label method: usage_argument_required method: usage_argument_token method: usage_arguments method: usage_choice_help method: usage_choice_label method: usage_choice_required method: usage_choices method: usage_description method: usage_footer method: usage_gist method: usage_header method: usage_line method: usage_name method: usage_option_default method: usage_option_help method: usage_option_label method: usage_option_required method: usage_option_token method: usage_options method: usage_summary method: usage_version method: vars method: yesno

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

# $cli->usage;

# ...

# $cli->parsed;

# {help => 1}

This package provides a superclass and methods for creating simple yet robust command-line interfaces.

Venus::Kind::Utility

Venus::Role::Printable

The name attribute is read-write, accepts (string) values, and is optional.

name(string $name) (string)

{ since => '4.15', }

The version attribute is read-write, accepts (string) values, and is optional.

version(string $version) (string)

{ since => '4.15', }

The summary attribute is read-write, accepts (string) values, and is optional.

summary(string $summary) (string)

{ since => '4.15', }

The description attribute is read-write, accepts (string) values, and is optional.

description(string $description) (string)

{ since => '4.15', }

The header attribute is read-write, accepts (string) values, and is optional.

header(string $header) (string)

{ since => '4.15', }

The footer attribute is read-write, accepts (string) values, and is optional.

footer(string $footer) (string)

{ since => '4.15', }

The arguments attribute is read-write, accepts (hashref) values, and is optional.

arguments(hashref $arguments) (hashref)

{ since => '4.15', }

The options attribute is read-write, accepts (hashref) values, and is optional.

options(hashref $options) (hashref)

{ since => '4.15', }

The choices attribute is read-write, accepts (hashref) values, and is optional.

choices(hashref $choices) (hashref)

{ since => '4.15', }

The data attribute is read-write, accepts (hashref) values, and is optional.

data(hashref $data) (hashref)

{ since => '4.15', }

The args method returns the list of parsed command-line arguments as a Venus::Args object.

args() (Venus::Args)

{ since => '4.15', }

The argument method registers and returns the configuration for the argument specified. The method takes a name (argument name) and a hashref of configuration values. The possible configuration values are as follows:

+=over 4

+=item *

The name key holds the name of the argument.

+=item *

The label key holds the name of the argument as it should be displayed in the CLI help text.

+=item *

The help key holds the help text specific to this argument.

+=item *

The default key holds the default value that should used if no value for this argument is provided to the CLI.

+=item *

The multiples key denotes whether this argument can be used more than once, to collect multiple values, and holds a 1 if multiples are allowed and a 0 otherwise.

+=item *

The prompt key holds the question or statement that should be presented to the user of the CLI if no value has been provided for this argument and no default value has been set.

+=item *

The range key holds a two-value arrayref where the first value is the starting index and the second value is the ending index. These values are used to select values from the parsed arguments array as the value(s) for this argument. This value is ignored if the multiples key is set to 0.

+=item *

The required key denotes whether this argument is required or not, and holds a 1 if required and a 0 otherwise.

+=item *

The type key holds the data type of the argument expected. Valid values are "number", "string", "float", "boolean", or "yesno". Note: Valid boolean values are 1, 0, "true", and "false".

+=back

argument(string $name, hashref $data) (maybe[hashref])

{ since => '4.15', }

The argument_choice method returns the parsed argument value only if it corresponds to a registered choice associated with the named argument. If the value (or any of the values) doesn't map to a choice, this method will return an empty arrayref. Returns a list in list context.

argument_choice(string $name) (arrayref)

{ since => '4.15', }

The argument_choices method returns all registered choices associated with the argument named. Returns a list in list context.

argument_choices(string $name) (arrayref)

{ since => '4.15', }

The argument_count method returns the count of registered arguments.

argument_count() (number)

{ since => '4.15', }

=example-1 argument_count

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_count = $cli->argument_count;

# 0

The argument_default method returns the default configuration value for the named argument.

argument_default(string $name) (string)

{ since => '4.15', }

=example-1 argument_default

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_default = $cli->argument_default;

# ""

The argument_errors method returns a list of "issues", if any, for each value returned by "argument_value" for the named argument. Returns a list in list context.

argument_errors(string $name) (within[arrayref, Venus::Validate])

{ since => '4.15', }

=example-1 argument_errors

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_errors = $cli->argument_errors;

# []

The argument_help method returns the help configuration value for the named argument.

argument_help(string $name) (string)

{ since => '4.15', }

=example-1 argument_help

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_help = $cli->argument_help;

# ""

The argument_label method returns the label configuration value for the named argument.

argument_label(string $name) (string)

{ since => '4.15', }

=example-1 argument_label

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_label = $cli->argument_label;

# ""

The argument_list method returns a list of registered argument configurations. Returns a list in list context.

argument_list(string $name) (within[arrayref, hashref])

{ since => '4.15', }

=example-1 argument_list

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_list = $cli->argument_list;

# []

The argument_multiples method returns the multiples configuration value for the named argument.

argument_multiples(string $name) (boolean)

{ since => '4.15', }

=example-1 argument_multiples

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_multiples = $cli->argument_multiples;

# false

The argument_name method returns the name configuration value for the named argument.

argument_name(string $name) (string)

{ since => '4.15', }

=example-1 argument_name

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_name = $cli->argument_name;

# ""

The argument_names method returns the names (keys) of registered arguments in the order declared. Returns a list in list context.

argument_names(string $name) (within[arrayref, string])

{ since => '4.15', }

=example-1 argument_names

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_names = $cli->argument_names;

# []

The argument_prompt method returns the prompt configuration value for the named argument.

argument_prompt(string $name) (string)

{ since => '4.15', }

=example-1 argument_prompt

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_prompt = $cli->argument_prompt;

# ""

The argument_range method returns the range configuration value for the named argument.

argument_range(string $name) (string)

{ since => '4.15', }

=example-1 argument_range

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_range = $cli->argument_range;

# ""

The argument_required method returns the required configuration value for the named argument.

argument_required(string $name) (boolean)

{ since => '4.15', }

=example-1 argument_required

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_required = $cli->argument_required;

# false

The argument_type method returns the type configuration value for the named argument. Valid values are as follows:

+=over 4

+=item *

number

+=item *

string

+=item *

float

+=item *

boolean - Note: Valid boolean values are 1, 0, "true", and "false".

+=item *

yesno

+=back

argument_type(string $name) (string)

{ since => '4.15', }

=example-1 argument_type

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_type = $cli->argument_type;

# ""

The argument_validate method returns a Venus::Validate object for each value returned by "argument_value" for the named argument. Returns a list in list context.

argument_validate(string $name) (Venus::Validate | within[arrayref, Venus::Validate])

{ since => '4.15', }

=example-1 argument_validate

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_validate = $cli->argument_validate;

# []

The argument_value method returns the parsed argument value for the named argument.

argument_value(string $name) (any)

{ since => '4.15', }

=example-1 argument_value

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_value = $cli->argument_value;

# undef

The argument_wants method returns the wants configuration value for the named argument.

argument_wants(string $name) (string)

{ since => '4.15', }

=example-1 argument_wants

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $argument_wants = $cli->argument_wants;

# ""

The assigned_arguments method gets the values for the registered arguments.

assigned_arguments() (hashref)

{ since => '4.15', }

=example-1 assigned_arguments

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

$cli->argument('extra', {
  range => '0:',
  type => 'string',
});

local @ARGV = qw(--input stdin --output stdout hello world);

my $assigned_arguments = $cli->assigned_arguments;

# {extra => 'hello'}

The assigned_options method gets the values for the registered options.

assigned_options() (hashref)

{ since => '4.15', }

=example-1 assigned_options

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

$cli->argument('extra', {
  range => '0:',
  type => 'string',
});

local @ARGV = qw(--input stdin --output stdout hello world);

my $assigned_options = $cli->assigned_options;

# {input => 'stdin', output => 'stdout'}

The boolean method is a configuration dispatcher and shorthand for {'type', 'boolean'}. It returns the data or dispatches to the next configuration dispatcher based on the name provided and merges the configurations produced.

boolean(string $method, any @args) (any)

{ since => '4.15', }

The choice method registers and returns the configuration for the choice specified. The method takes a name (choice name) and a hashref of configuration values. The possible configuration values are as follows:

+=over 4

+=item *

The name key holds the name of the argument.

+=item *

The label key holds the name of the argument as it should be displayed in the CLI help text.

+=item *

The help key holds the help text specific to this argument.

+=item *

The argument key holds the name of the argument that this choice is a value for.

+=item *

The wants key holdd the text to be used as a value placeholder in the CLI help text.

+=back

choice(string $name, hashref $data) (maybe[hashref])

{ since => '4.15', }

=example-1 choice

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->argument('input', {
  range => '0',
  type => 'string',
});

my $choice = $cli->choice('stdin', {
  argument => 'input',
});

# {
#   name => 'stdin',
#   label => undef,
#   help => undef,
#   argument => 'input',
#   index => 0,
#   wants => 'string',
# }

The choice_argument method returns the argument configuration corresponding with the argument value of the named choice.

choice_argument(string $name) (hashref)

{ since => '4.15', }

=example-1 choice_argument

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->argument('input', {
  type => 'string',
});

$cli->choice('stdin', {
  argument => 'input',
});

my $choice_argument = $cli->choice_argument('stdin');

# {
#   name => 'input',
#   label => undef,
#   help => 'Expects a string value',
#   default => undef,
#   multiples => 0,
#   prompt => undef,
#   range => undef,
#   required => 0,
#   type => 'string',
#   index => 0,
#   wants => 'string',
# }

The choice_count method returns the count of registered choices.

choice_count() (number)

{ since => '4.15', }

=example-1 choice_count

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_count = $cli->choice_count;

# 0

The choice_default method returns the default configuration value for the argument corresponding to the named choice.

choice_default(string $name) (string)

{ since => '4.15', }

=example-1 choice_default

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->argument('input', {
  default => 'file',
  type => 'string',
});

$cli->choice('stdin', {
  argument => 'input',
});

my $choice_default = $cli->choice_default('stdin');

# "file"

The choice_errors method returns a list of "issues", if any, for each value returned by "choice_value" for the named choice. Returns a list in list context.

choice_errors(string $name) (within[arrayref, Venus::Validate])

{ since => '4.15', }

=example-1 choice_errors

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_errors = $cli->choice_errors;

# []

The choice_help method returns the help configuration value the named choice.

choice_help(string $name) (string)

{ since => '4.15', }

=example-1 choice_help

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_help = $cli->choice_help;

# ""

The choice_label method returns the label configuration value for the named choice.

choice_label(string $name) (string)

{ since => '4.15', }

=example-1 choice_label

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_label = $cli->choice_label;

# ""

The choice_list method returns a list of registered choice configurations. Returns a list in list context.

choice_list(string $name) (within[arrayref, hashref])

{ since => '4.15', }

=example-1 choice_list

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_list = $cli->choice_list;

# []

The choice_multiples method returns the multiples configuration value for the argument corresponding to the named choice.

choice_multiples(string $name) (boolean)

{ since => '4.15', }

=example-1 choice_multiples

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_multiples = $cli->choice_multiples;

# false

The choice_name method returns the name configuration value for the named choice.

choice_name(string $name) (string)

{ since => '4.15', }

=example-1 choice_name

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_name = $cli->choice_name;

# ""

The choice_names method returns the names (keys) of registered choices in the order declared. Returns a list in list context.

choice_names(string $name) (within[arrayref, string])

{ since => '4.15', }

=example-1 choice_names

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_names = $cli->choice_names;

# []

The choice_prompt method returns the prompt configuration value for the argument corresponding to the named choice.

choice_prompt(string $name) (string)

{ since => '4.15', }

=example-1 choice_prompt

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_prompt = $cli->choice_prompt;

# ""

The choice_range method returns the range configuration value for the argument corresponding to the named choice.

choice_range(string $name) (string)

{ since => '4.15', }

=example-1 choice_range

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_range = $cli->choice_range;

# ""

The choice_required method returns the required configuration value for the argument corresponding to the named choice.

choice_required(string $name) (boolean)

{ since => '4.15', }

=example-1 choice_required

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_required = $cli->choice_required;

# false

The choice_type method returns the type configuration value for the argument corresponding to the named choice.

choice_type(string $name) (string)

{ since => '4.15', }

=example-1 choice_type

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_type = $cli->choice_type;

# ""

The choice_validate method returns a Venus::Validate object for each value returned by "choice_value" for the named choice. Returns a list in list context.

choice_validate(string $name) (within[arrayref, Venus::Validate])

{ since => '4.15', }

=example-1 choice_validate

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_validate = $cli->choice_validate;

# []

The choice_value method returns the parsed choice value for the named choice.

choice_value(string $name) (any)

{ since => '4.15', }

=example-1 choice_value

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_value = $cli->choice_value;

# undef

The choice_wants method returns the wants configuration value for the argument corresponding to the named choice.

choice_wants(string $name) (string)

{ since => '4.15', }

=example-1 choice_wants

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $choice_wants = $cli->choice_wants;

# ""

The command method creates and associates an argument, choice, and route. It takes an argument name, a choice name (string or arrayref of parts), and a handler (method name or coderef). The method returns the route configuration for the command.

command(string $argument, string | arrayref $choice, string | coderef $handler) (maybe[hashref])

{ since => '4.15', }

=example-1 command

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $command = $cli->command('command', ['user', 'create'], 'handle_user_create');

# {
#   name => 'user create',
#   label => undef,
#   help => undef,
#   argument => 'command',
#   choice => 'user create',
#   handler => 'handle_user_create',
#   range => ':1',
#   index => 0,
# }

The dispatch method parses CLI arguments, matches them against registered routes, and invokes the appropriate handler. If the handler is a coderef, it is called with the CLI instance, "assigned_arguments", and "assigned_options". If the handler is a local method name, it is called with </assigned_arguments>, and "assigned_options". If the handler is a package name, the package is loaded and instantiated. If the package is a Venus::Task, its "handle" in Venus::Task method is called. If the package is a Venus::Cli, its "dispatch" method is called. When dispatching to a package, only the relevant portion of the command line arguments (after the matched command) is passed.

dispatch(any @args) (any)

{ since => '4.15', }

=example-1 dispatch

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $dispatch = $cli->dispatch;

# undef

The exit method terminates the program with a specified exit code. If no exit code is provided, it defaults to 0, indicating a successful exit. This method can be used to end the program explicitly, either after a specific task is completed or when an error occurs that requires halting execution. This method can dispatch to another method or callback before exiting.

exit(number $expr, string | coderef $code, any @args) (any)

{ since => '4.15', }

The fail method terminates the program with a the exit code 1, indicating a failure on exit. This method can be used to end the program explicitly, either after a specific task is completed or when an error occurs that requires halting execution. This method can dispatch to another method or callback before exiting.

fail(string | coderef $code, any @args) (any)

{ since => '4.15', }

The float method is a configuration dispatcher and shorthand for {'type', 'float'}. It returns the data or dispatches to the next configuration dispatcher based on the name provided and merges the configurations produced.

float(string $method, any @args) (any)

{ since => '4.15', }

The has_input method returns true if input arguments and/or options are found, and otherwise returns false.

has_input() (boolean)

{ since => '4.15', }

=example-1 has_input

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $has_input = $cli->has_input;

# false

The has_input_arguments method returns true if input arguments are found, and otherwise returns false.

has_input_arguments() (boolean)

{ since => '4.15', }

=example-1 has_input_arguments

# given: synopsis

package main;

$cli->argument('args', {
  range => '0:',
  type => 'string',
});

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $has_input_arguments = $cli->has_input_arguments;

# false

The has_input_options method returns true if input options are found, and otherwise returns false.

has_input_options() (boolean)

{ since => '4.15', }

=example-1 has_input_options

# given: synopsis

package main;

$cli->argument('args', {
  range => '0:',
  type => 'string',
});

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $has_input_options = $cli->has_input_options;

# false

The has_output method returns true if output events are found, and otherwise returns false.

has_output() (boolean)

{ since => '4.15', }

=example-1 has_output

# given: synopsis

package main;

$cli->argument('args', {
  range => '0:',
  type => 'string',
});

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $has_output = $cli->has_output;

# false

The has_output_debug_events method returns true if debug output events are found, and otherwise returns false.

has_output_debug_events() (boolean)

{ since => '4.15', }

=example-1 has_output_debug_events

# given: synopsis

package main;

$cli->argument('args', {
  range => '0:',
  type => 'string',
});

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

$cli->log_info('example output');

my $has_output_debug_events = $cli->has_output_debug_events;

# false

The has_output_error_events method returns true if error output events are found, and otherwise returns false.

has_output_error_events() (boolean)

{ since => '4.15', }

=example-1 has_output_error_events

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

$cli->log_info('example output');

my $has_output_error_events = $cli->has_output_error_events;

# false

The has_output_fatal_events method returns true if fatal output events are found, and otherwise returns false.

has_output_fatal_events() (boolean)

{ since => '4.15', }

=example-1 has_output_fatal_events

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

$cli->log_info('example output');

my $has_output_fatal_events = $cli->has_output_fatal_events;

# false

The has_output_info_events method returns true if info output events are found, and otherwise returns false.

has_output_info_events() (boolean)

{ since => '4.15', }

=example-1 has_output_info_events

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

$cli->log_info('example output');

my $has_output_info_events = $cli->has_output_info_events;

# true

The has_output_trace_events method returns true if trace output events are found, and otherwise returns false.

has_output_trace_events() (boolean)

{ since => '4.15', }

=example-1 has_output_trace_events

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

$cli->log_info('example output');

my $has_output_trace_events = $cli->has_output_trace_events;

# false

The has_output_warn_events method returns true if warn output events are found, and otherwise returns false.

has_output_warn_events() (boolean)

{ since => '4.15', }

=example-1 has_output_warn_events

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

$cli->log_info('example output');

my $has_output_warn_events = $cli->has_output_warn_events;

# false

The help method uses "log_info" method to output CLI usage/help text.

help() (Venus::Cli)

{ since => '4.15', }

=example-1 help

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $help = $cli->help;

# bless(..., "Venus::Cli")

The input method returns input arguments in scalar context, and returns arguments and options in list context. Arguments and options are returned as hashrefs.

input() (hashref)

{ since => '4.15', }

=example-1 input

# given: synopsis

package main;

$cli->argument('args', {
  range => '0:',
  type => 'string',
});

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $input = $cli->input;

# {args => undef}

The input_argument_count method returns the number of arguments provided to the CLI.

input_argument_count() (number)

{ since => '4.15', }

=example-1 input_argument_count

# given: synopsis

package main;

$cli->argument('args', {
  range => '0:',
  multiples => 1,
  type => 'string',
});

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $input_argument_count = $cli->input_argument_count;

# 1

The input_argument_list method returns the list of argument names as an arrayref in scalar context, and as a list in list context.

input_argument_list() (arrayref)

{ since => '4.15', }

=example-1 input_argument_list

# given: synopsis

package main;

$cli->argument('args', {
  range => '0:',
  multiples => 1,
  type => 'string',
});

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $input_argument_list = $cli->input_argument_list;

# ['args']

The input_arguments method returns the list of argument names and values as a hashref.

input_arguments() (hashref)

{ since => '4.15', }

=example-1 input_arguments

# given: synopsis

package main;

$cli->argument('args', {
  range => '0:',
  multiples => 1,
  type => 'string',
});

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $input_arguments = $cli->input_arguments;

# {args => []}

The input_arguments_defined method returns the list of argument names and values as a hashref, excluding undefined and empty arrayref values.

input_arguments_defined() (hashref)

{ since => '4.15', }

=example-1 input_arguments_defined

# given: synopsis

package main;

$cli->argument('args', {
  range => '0:',
  multiples => 1,
  type => 'string',
});

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $input_arguments_defined = $cli->input_arguments_defined;

# {}

The input_arguments_defined_count method returns the number of arguments found using "input_arguments_defined".

input_arguments_defined_count() (number)

{ since => '4.15', }

=example-1 input_arguments_defined_count

# given: synopsis

package main;

$cli->argument('args', {
  range => '0:',
  multiples => 1,
  type => 'string',
});

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $input_arguments_defined_count = $cli->input_arguments_defined_count;

# 0

The input_arguments_defined_list method returns the list of argument names found, using "input_arguments_defined", as an arrayref in scalar context, and as a list in list context.

input_arguments_defined_list() (arrayref)

{ since => '4.15', }

=example-1 input_arguments_defined_list

# given: synopsis

package main;

$cli->argument('args', {
  range => '0:',
  multiples => 1,
  type => 'string',
});

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $input_arguments_defined_list = $cli->input_arguments_defined_list;

# []

The input_option_count method returns the number of options provided to the CLI.

input_option_count() (number)

{ since => '4.15', }

=example-1 input_option_count

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $input_option_count = $cli->input_option_count;

# 2

The input_option_list method returns the list of option names as an arrayref in scalar context, and as a list in list context.

input_option_list() (arrayref)

{ since => '4.15', }

=example-1 input_option_list

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $input_option_list = $cli->input_option_list;

# ['input', 'output']

The input_options method returns the list of option names and values as a hashref.

input_options() (hashref)

{ since => '4.15', }

=example-1 input_options

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $input_options = $cli->input_options;

# {input => undef, output => undef}

The input_options_defined method returns the list of option names and values as a hashref, excluding undefined and empty arrayref values.

input_options_defined() (hashref)

{ since => '4.15', }

=example-1 input_options_defined

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $input_options_defined = $cli->input_options_defined;

# {}

The input_options_defined_count method returns the number of options found using "input_options_defined".

input_options_defined_count() (number)

{ since => '4.15', }

=example-1 input_options_defined_count

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $input_options_defined_count = $cli->input_options_defined_count;

# 0

The input_options_defined_list method returns the list of option names found, using "input_options_defined", as an arrayref in scalar context, and as a list in list context.

input_options_defined_list() (arrayref)

{ since => '4.15', }

=example-1 input_options_defined_list

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $input_options_defined_list = $cli->input_options_defined_list;

# []

The lines method takes a string of text, a maximum character length for each line, and an optional number of spaces to use for indentation (defaulting to 0). It returns the text formatted as a string where each line wraps at the specified length and is indented with the given number of spaces. The default lenght is 80.

lines(string $text, number $length, number $indent) (string)

{ since => '4.15', }

The log method returns a Venus::Log object passing "log_handler" and "log_level" to its constructor.

log() (Venus::Log)

{ since => '4.15', }

The log_debug method dispatches to the debug method on the object returned by "log".

log_debug(any @args) (Venus::Log)

{ since => '4.15', }

=example-1 log_debug

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $log_debug = $cli->log_debug('Example debug');

# bless(..., "Venus::Log")

The log_error method dispatches to the error method on the object returned by "log".

log_error(any @args) (Venus::Log)

{ since => '4.15', }

=example-1 log_error

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $log_error = $cli->log_error('Example error');

# bless(..., "Venus::Log")

The log_events method returns the log messages collected by the default "log_handler".

log_events() (arrayref)

{ since => '4.15', }

=example-1 log_events

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->log_debug('Example debug');

$cli->log_error('Example error');

my $log_events = $cli->log_events;

# [['debug', 'Example debug'], ['debug', 'Example error']]

The log_fatal method dispatches to the fatal method on the object returned by "log".

log_fatal(any @args) (Venus::Log)

{ since => '4.15', }

=example-1 log_fatal

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $log_fatal = $cli->log_fatal('Example fatal');

# bless(..., "Venus::Log")

The log_flush method dispatches to the method or callback provided for each "log event", then purges all log events.

log_flush(string | coderef $code) (Venus::Cli)

{ since => '4.15', }

=example-1 log_flush

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->log_debug('Example debug 1');

$cli->log_debug('Example debug 2');

my $log_flush = $cli->log_flush(sub{
  push @{$cli->{flushed} ||= []}, $_;
});

# bless(..., "Venus::Cli")

The log_handler method is passed to the Venus::Log constructor in "log" and by default handles log events by recording them to be "flushed" later.

log_handler() (coderef)

{ since => '4.15', }

=example-1 log_handler

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $log_handler = $cli->log_handler;

# sub{...}

The log_info method dispatches to the info method on the object returned by "log".

log_info(any @args) (Venus::Log)

{ since => '4.15', }

=example-1 log_info

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $log_info = $cli->log_info('Example info');

# bless(..., "Venus::Log")

The log_level method is passed to the Venus::Log constructor in "log" and by default specifies a log-level of debug.

log_level() (string)

{ since => '4.15', }

=example-1 log_level

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $log_level = $cli->log_level;

# "trace"

The log_trace method dispatches to the trace method on the object returned by "log".

log_trace(any @args) (Venus::Log)

{ since => '4.15', }

=example-1 log_trace

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $log_trace = $cli->log_trace('Example trace');

# bless(..., "Venus::Log")

The log_warn method dispatches to the warn method on the object returned by "log".

log_warn(any @args) (Venus::Log)

{ since => '4.15', }

=example-1 log_warn

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $log_warn = $cli->log_warn('Example warn');

# bless(..., "Venus::Log")

The multiple method is a configuration dispatcher and shorthand for {'multiples', true}. It returns the data or dispatches to the next configuration dispatcher based on the name provided and merges the configurations produced.

multiple(string $method, any @args) (any)

{ since => '4.15', }

The new method constructs an instance of the package.

new(any @args) (Venus::Cli)

{ since => '4.15', }

=example-1 new

package main;

use Venus::Cli;

my $cli = Venus::Cli->new('mycli');

# bless(..., "Venus::Cli")

# $cli->name;

# "mycli"

The no_input method returns true if no arguments or options are provided to the CLI, and false otherwise.

no_input() (boolean)

{ since => '4.15', }

=example-1 no_input

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $no_input = $cli->no_input;

# true

The no_input_arguments method returns true if no arguments are provided to the CLI, and false otherwise.

no_input_arguments() (boolean)

{ since => '4.15', }

=example-1 no_input_arguments

# given: synopsis

package main;

$cli->argument('args', {
  range => '0:',
  multiples => 1,
  type => 'string',
});

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $no_input_arguments = $cli->no_input_arguments;

# true

The no_input_options method returns true if no options are provided to the CLI, and false otherwise.

no_input_options() (boolean)

{ since => '4.15', }

=example-1 no_input_options

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $no_input_options = $cli->no_input_options;

# true

The no_output method returns true if no output events are found, and false otherwise.

no_output() (boolean)

{ since => '4.15', }

=example-1 no_output

# given: synopsis

package main;

my $no_output = $cli->no_output;

# true

The no_output_debug_events method returns true if no debug output events are found, and false otherwise.

no_output_debug_events() (boolean)

{ since => '4.15', }

=example-1 no_output_debug_events

# given: synopsis

package main;

$cli->log_info('example output');

my $no_output_debug_events = $cli->no_output_debug_events;

# true

The no_output_error_events method returns true if no error output events are found, and false otherwise.

no_output_error_events() (boolean)

{ since => '4.15', }

=example-1 no_output_error_events

# given: synopsis

package main;

$cli->log_info('example output');

my $no_output_error_events = $cli->no_output_error_events;

# true

The no_output_fatal_events method returns true if no fatal output events are found, and false otherwise.

no_output_fatal_events() (boolean)

{ since => '4.15', }

=example-1 no_output_fatal_events

# given: synopsis

package main;

$cli->log_info('example output');

my $no_output_fatal_events = $cli->no_output_fatal_events;

# true

The no_output_info_events method returns true if no info output events are found, and false otherwise.

no_output_info_events() (boolean)

{ since => '4.15', }

=example-1 no_output_info_events

# given: synopsis

package main;

$cli->log_info('example output');

my $no_output_info_events = $cli->no_output_info_events;

# false

The no_output_trace_events method returns true if no trace output events are found, and false otherwise.

no_output_trace_events() (boolean)

{ since => '4.15', }

=example-1 no_output_trace_events

# given: synopsis

package main;

$cli->log_info('example output');

my $no_output_trace_events = $cli->no_output_trace_events;

# true

The no_output_warn_events method returns true if no warn output events are found, and false otherwise.

no_output_warn_events() (boolean)

{ since => '4.15', }

=example-1 no_output_warn_events

# given: synopsis

package main;

$cli->log_info('example output');

my $no_output_warn_events = $cli->no_output_warn_events;

# true

The number method is a configuration dispatcher and shorthand for {'type', 'number'}. It returns the data or dispatches to the next configuration dispatcher based on the name provided and merges the configurations produced.

number(string $method, any @args) (any)

{ since => '4.15', }

The okay method terminates the program with a the exit code 0, indicating a successful exit. This method can be used to end the program explicitly, either after a specific task is completed or when an error occurs that requires halting execution. This method can dispatch to another method or callback before exiting.

okay(string | coderef $code, any @args) (any)

{ since => '4.15', }

The option method registers and returns the configuration for the option specified. The method takes a name (option name) and a hashref of configuration values. The possible configuration values are as follows:

+=over 4

+=item *

The name key holds the name of the option.

+=item *

The label key holds the name of the option as it should be displayed in the CLI help text.

+=item *

The help key holds the help text specific to this option.

+=item *

The default key holds the default value that should used if no value for this option is provided to the CLI.

+=item *

The aliases (or alias) key holds the arrayref of aliases that can be provided to the CLI to specify a value (or values) for this option.

+=item *

The multiples key denotes whether this option can be used more than once, to collect multiple values, and holds a 1 if multiples are allowed and a 0 otherwise.

+=item *

The prompt key holds the question or statement that should be presented to the user of the CLI if no value has been provided for this option and no default value has been set.

+=item *

The range key holds a two-value arrayref where the first value is the starting index and the second value is the ending index. These values are used to select values from the parsed arguments array as the value(s) for this argument. This value is ignored if the multiples key is set to 0.

+=item *

The required key denotes whether this option is required or not, and holds a 1 if required and a 0 otherwise.

+=item *

The type key holds the data type of the option expected. Valid values are "number", "string", "float", "boolean", or "yesno". Note: Valid boolean values are 1, 0, "true", and "false".

+=item *

The wants key holds the text to be used as a value being assigned to the option in the usage text. This value defaults to the type specified, or "string".

+=back

option(string $name, hashref $data) (maybe[hashref])

{ since => '4.15', }

The option_aliases method returns the aliases configuration value for the named option.

option_aliases(string $name) (arrayref)

{ since => '4.15', }

=example-1 option_aliases

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_aliases = $cli->option_aliases;

# []

The option_count method returns the count of registered options.

option_count() (number)

{ since => '4.15', }

=example-1 option_count

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_count = $cli->option_count;

# 0

The option_default method returns the default configuration value for the named option.

option_default(string $name) (string)

{ since => '4.15', }

=example-1 option_default

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_default = $cli->option_default;

# ""

The option_errors method returns a list of "issues", if any, for each value returned by "option_value" for the named option. Returns a list in list context.

option_errors(string $name) (within[arrayref, Venus::Validate])

{ since => '4.15', }

=example-1 option_errors

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_errors = $cli->option_errors;

# []

The option_help method returns the help configuration value for the named option.

option_help(string $name) (string)

{ since => '4.15', }

=example-1 option_help

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_help = $cli->option_help;

# ""

The option_label method returns the label configuration value for the named option.

option_label(string $name) (string)

{ since => '4.15', }

=example-1 option_label

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_label = $cli->option_label;

# ""

The option_list method returns a list of registered option configurations. Returns a list in list context.

option_list(string $name) (within[arrayref, hashref])

{ since => '4.15', }

=example-1 option_list

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_list = $cli->option_list;

# []

The option_multiples method returns the multiples configuration value for the named option.

option_multiples(string $name) (boolean)

{ since => '4.15', }

=example-1 option_multiples

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_multiples = $cli->option_multiples;

# false

The option_name method returns the name configuration value for the named option.

option_name(string $name) (string)

{ since => '4.15', }

=example-1 option_name

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_name = $cli->option_name;

# ""

The option_names method returns the names (keys) of registered options in the order declared. Returns a list in list context.

option_names(string $name) (within[arrayref, string])

{ since => '4.15', }

=example-1 option_names

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_names = $cli->option_names;

# []

The option_prompt method returns the prompt configuration value for the named option.

option_prompt(string $name) (string)

{ since => '4.15', }

=example-1 option_prompt

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_prompt = $cli->option_prompt;

# ""

The option_range method returns the range configuration value for the named option.

option_range(string $name) (string)

{ since => '4.15', }

=example-1 option_range

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_range = $cli->option_range;

# ""

The option_required method returns the required configuration value for the named option.

option_required(string $name) (boolean)

{ since => '4.15', }

=example-1 option_required

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_required = $cli->option_required;

# false

The option_type method returns the type configuration value for the named option. Valid values are as follows:

+=over 4

+=item *

number

+=item *

string

+=item *

float

+=item *

boolean - Note: Valid boolean values are 1, 0, "true", and "false".

+=item *

yesno

+=back

option_type(string $name) (string)

{ since => '4.15', }

=example-1 option_type

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_type = $cli->option_type;

# ""

The option_validate method returns a Venus::Validate object for each value returned by "option_value" for the named option. Returns a list in list context.

option_validate(string $name) (Venus::Validate | within[arrayref, Venus::Validate])

{ since => '4.15', }

=example-1 option_validate

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_validate = $cli->option_validate;

# []

The option_value method returns the parsed option value for the named option.

option_value(string $name) (any)

{ since => '4.15', }

=example-1 option_value

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_value = $cli->option_value;

# undef

The option_wants method returns the wants configuration value for the named option.

option_wants(string $name) (string)

{ since => '4.15', }

=example-1 option_wants

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $option_wants = $cli->option_wants;

# ""

The optional method is a configuration dispatcher and shorthand for {'required', false}. It returns the data or dispatches to the next configuration dispatcher based on the name provided and merges the configurations produced.

optional(string $method, any @args) (any)

{ since => '4.15', }

The opts method returns the list of parsed command-line options as a Venus::Opts object.

opts() (Venus::Opts)

{ since => '4.15', }

=example-1 opts

# given: synopsis

package main;

my $opts = $cli->opts;

# bless(..., "Venus::Opts")

The output method returns the list of output events as an arrayref in scalar context, and a list in list context. The method optionally takes a log-level and if provided will only return output events for that log-level.

output(string $level) (any)

{ since => '4.15', }

=example-1 output

# given: synopsis

package main;

my $output = $cli->output;

# undef

The output_debug_events method returns the list of debug output events as an arrayref in scalar context, and a list in list context.

output_debug_events() (arrayref)

{ since => '4.15', }

=example-1 output_debug_events

# given: synopsis

package main;

$cli->log_info('example output');

my $output_debug_events = $cli->output_debug_events;

# []

The output_error_events method returns the list of error output events as an arrayref in scalar context, and a list in list context.

output_error_events() (arrayref)

{ since => '4.15', }

=example-1 output_error_events

# given: synopsis

package main;

$cli->log_info('example output');

my $output_error_events = $cli->output_error_events;

# []

The output_fatal_events method returns the list of fatal output events as an arrayref in scalar context, and a list in list context.

output_fatal_events() (arrayref)

{ since => '4.15', }

=example-1 output_fatal_events

# given: synopsis

package main;

$cli->log_info('example output');

my $output_fatal_events = $cli->output_fatal_events;

# []

The output_info_events method returns the list of info output events as an arrayref in scalar context, and a list in list context.

output_info_events() (arrayref)

{ since => '4.15', }

=example-1 output_info_events

# given: synopsis

package main;

$cli->log_warn('example output');

my $output_info_events = $cli->output_info_events;

# []

The output_trace_events method returns the list of trace output events as an arrayref in scalar context, and a list in list context.

output_trace_events() (arrayref)

{ since => '4.15', }

=example-1 output_trace_events

# given: synopsis

package main;

$cli->log_info('example output');

my $output_trace_events = $cli->output_trace_events;

# []

The output_warn_events method returns the list of warn output events as an arrayref in scalar context, and a list in list context.

output_warn_events() (arrayref)

{ since => '4.15', }

=example-1 output_warn_events

# given: synopsis

package main;

$cli->log_info('example output');

my $output_warn_events = $cli->output_warn_events;

# []

The parse method accepts arbitrary input (typically strings or arrayrefs of strings) and parses out the arguments and options made available via "parsed_arguments" and "parsed_options" respectively. If no arguments are provided @ARGV is used as a default.

parse(any @args) (Venus::Cli)

{ since => '4.15', }

=example-1 parse

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $parse = $cli->parse;

# bless(..., "Venus::Cli")

# $cli->parsed_arguments

# []

# $result->parsed_options

# {}

The parsed method is shorthand for calling the "parsed_arguments" and/or "parsed_options" method directly. In scalar context this method returns "parsed_options". In list context returns "parsed_options" and "parsed_arguments" in that order.

parsed() (arrayref | hashref)

{ since => '4.15', }

=example-1 parsed

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $parsed = $cli->parsed;

# {}

The parsed_arguments method gets or sets the set of parsed arguments. This method calls "parse" if no data has been set.

parsed_arguments(arrayref $data) (arrayref)

{ since => '4.15', }

=example-1 parsed_arguments

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

$cli->argument('extra', {
  range => '0:',
  type => 'string',
});

local @ARGV = qw(--input stdin --output stdout hello world);

my $parsed_arguments = $cli->parsed_arguments;

# ['hello', 'world']

The parsed_options method method gets or sets the set of parsed options. This method calls "parse" if no data has been set.

parsed_options(hashref $data) (hashref)

{ since => '4.15', }

=example-1 parsed_options

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

$cli->argument('extra', {
  range => '0:',
  type => 'string',
});

local @ARGV = qw(--input stdin --output stdout hello world);

my $parsed_options = $cli->parsed_options;

# {input => 'stdin', output => 'stdout'}

The pass method terminates the program with a the exit code 0, indicating a successful exit. This method can be used to end the program explicitly, either after a specific task is completed or when an error occurs that requires halting execution. This method can dispatch to another method or callback before exiting.

pass(string | coderef $code, any @args) (any)

{ since => '4.15', }

The reorder method re-indexes the "arguments", "choices", and "options", based on the order they were declared.

reorder() (Venus::Cli)

{ since => '4.15', }

=example-1 reorder

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->argument('input', {
  type => 'string',
  index => 1,
});

$cli->argument('output', {
  type => 'string',
  index => 3,
});

$cli->option('file', {
  type => 'string',
  index => 1,
});

$cli->option('directory', {
  type => 'string',
  index => 3,
});

$cli->choice('stdin', {
  argument => 'input',
  type => 'string',
  index => 1,
});

$cli->choice('stdout', {
  argument => 'output',
  type => 'string',
  index => 3,
});

my $reorder = $cli->reorder;

# bless(..., "Venus::Cli")

The reorder_arguments method re-indexes the "arguments" based on the order they were declared.

reorder_arguments() (Venus::Cli)

{ since => '4.15', }

=example-1 reorder_arguments

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->argument('input', {
  type => 'string',
  index => 1,
});

$cli->argument('output', {
  type => 'string',
  index => 3,
});

my $reorder_arguments = $cli->reorder_arguments;

# bless(..., "Venus::Cli")

The reorder_choices method re-indexes the "choices" based on the order they were declared.

reorder_choices() (Venus::Cli)

{ since => '4.15', }

=example-1 reorder_choices

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->argument('input', {
  type => 'string',
  index => 1,
});

$cli->argument('output', {
  type => 'string',
  index => 3,
});

$cli->choice('stdin', {
  argument => 'input',
  type => 'string',
  index => 1,
});

$cli->choice('stdout', {
  argument => 'output',
  type => 'string',
  index => 3,
});

my $reorder_choices = $cli->reorder_choices;

# bless(..., "Venus::Cli")

The reorder_options method re-indexes the "options" based on the order they were declared.

reorder_options() (Venus::Cli)

{ since => '4.15', }

=example-1 reorder_options

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->option('file', {
  type => 'string',
  index => 1,
});

$cli->option('directory', {
  type => 'string',
  index => 3,
});

my $reorder_options = $cli->reorder_options;

# bless(..., "Venus::Cli")

The reorder_routes method reorders the registered routes based on their indices. This method returns the invocant.

reorder_routes() (Venus::Cli)

{ since => '4.15', }

=example-1 reorder_routes

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->route('user create', {
  handler => 'handle_user_create',
  index => 1,
});

$cli->route('user delete', {
  handler => 'handle_user_delete',
  index => 0,
});

my $reorder_routes = $cli->reorder_routes;

# bless(..., "Venus::Cli")

The route method registers and returns the configuration for the route specified. The method takes a name (route name) and a hashref of configuration values. The possible configuration values are as follows:

+=over 4

+=item *

The name key holds the name of the route.

+=item *

The label key holds the name of the route as it should be displayed in the CLI help text.

+=item *

The help key holds the help text specific to this route.

+=item *

The argument key holds the name of the argument that this route is associated with.

+=item *

The choice key holds the name of the choice that this route is associated with.

+=item *

The handler key holds the (local) method name, or Venus::Cli derived package, or coderef to execute when this route is matched.

+=item *

The range key holds the range specification for the argument.

+=item *

The wants key holds the text to be used as a value placeholder in the CLI help text.

+=back

route(string $name, hashref $data) (maybe[hashref])

{ since => '4.15', }

=example-1 route

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $route = $cli->route('user create');

# undef

The route_argument method returns the argument configuration for the named route.

route_argument(string $name) (maybe[hashref])

{ since => '4.15', }

=example-1 route_argument

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $route_argument = $cli->route_argument;

# ""

The route_choice method returns the choice configuration for the named route.

route_choice(string $name) (maybe[hashref])

{ since => '4.15', }

=example-1 route_choice

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $route_choice = $cli->route_choice;

# ""

The route_count method returns the number of registered routes.

route_count() (number)

{ since => '4.15', }

=example-1 route_count

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $route_count = $cli->route_count;

# 0

The route_handler method returns the handler for the named route.

route_handler(string $name) (maybe[string | coderef])

{ since => '4.15', }

=example-1 route_handler

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $route_handler = $cli->route_handler;

# undef

The route_help method returns the help text for the named route.

route_help(string $name) (string)

{ since => '4.15', }

=example-1 route_help

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $route_help = $cli->route_help;

# ""

The route_label method returns the label for the named route.

route_label(string $name) (string)

{ since => '4.15', }

=example-1 route_label

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $route_label = $cli->route_label;

# ""

The route_list method returns a list of all registered route configurations in insertion order.

route_list() (arrayref[hashref])

{ since => '4.15', }

=example-1 route_list

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $route_list = $cli->route_list;

# []

The route_name method returns the name of the named route.

route_name(string $name) (string)

{ since => '4.15', }

=example-1 route_name

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $route_name = $cli->route_name;

# ""

The route_names method returns a list of all registered route names in insertion order.

route_names() (arrayref[string])

{ since => '4.15', }

=example-1 route_names

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $route_names = $cli->route_names;

# []

The route_range method returns the range for the named route.

route_range(string $name) (string)

{ since => '4.15', }

=example-1 route_range

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $route_range = $cli->route_range;

# ""

The required method is a configuration dispatcher and shorthand for {'required', true}. It returns the data or dispatches to the next configuration dispatcher based on the name provided and merges the configurations produced.

required(string $method, any @args) (any)

{ since => '4.15', }

The reset method clears the argument and option configurations, cached parsed values, and returns the invocant.

reset() (Venus::Cli)

{ since => '4.15', }

=example-1 reset

# given: synopsis

package main;

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $reset = $cli->reset;

# bless(..., "Venus::Cli")

The single method is a configuration dispatcher and shorthand for {'multiples', false}. It returns the data or dispatches to the next configuration dispatcher based on the name provided and merges the configurations produced.

single(string $method, any @args) (any)

{ since => '4.15', }

The spec method configures the CLI instance from a hashref specification. It accepts a hashref containing any of the following keys: name, version, summary, description, header, footer, arguments, options, choices, routes, and commands. The method returns the invocant.

spec(hashref $data) (Venus::Cli)

{ since => '4.15', }

=example-1 spec

package main;

use Venus::Cli;

my $cli = Venus::Cli->new;

my $spec = $cli->spec;

# bless(..., "Venus::Cli")

The string method is a configuration dispatcher and shorthand for {'type', 'string'}. It returns the data or dispatches to the next configuration dispatcher based on the name provided and merges the configurations produced.

string(string $method, any @args) (any)

{ since => '4.15', }

The usage method provides the command-line usage information for the CLI. It outputs details such as available choices, arguments, options, and a general summary of how to use the CLI. This method is useful for users needing guidance on the various arguments, options, and choices available, and how they work.

usage() (string)

{ since => '4.15', }

=example-1 usage

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage = $cli->usage;

# "Usage: mycli"

The usage_argument_default method renders the default configuration value for the named argument for use in the CLI "usage" text.

usage_argument_default(string $name) (string)

{ since => '4.15', }

=example-1 usage_argument_default

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_argument_default = $cli->usage_argument_default;

# ""

The usage_argument_help method renders the help configuration value for the named argument for use in the CLI "usage" text.

usage_argument_help(string $name) (string)

{ since => '4.15', }

=example-1 usage_argument_help

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_argument_help = $cli->usage_argument_help;

# ""

The usage_argument_label method renders the label configuration value for the named argument for use in the CLI "usage" text.

usage_argument_label(string $name) (string)

{ since => '4.15', }

=example-1 usage_argument_label

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_argument_label = $cli->usage_argument_label;

# ""

The usage_argument_required method renders the required configuration value for the named argument for use in the CLI "usage" text.

usage_argument_required(string $name) (string)

{ since => '4.15', }

=example-1 usage_argument_required

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_argument_required = $cli->usage_argument_required;

# "(optional)"

The usage_argument_token method renders the token configuration value for the named argument for use in the CLI "usage" text.

usage_argument_token(string $name) (string)

{ since => '4.15', }

=example-1 usage_argument_token

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_argument_token = $cli->usage_argument_token;

# ""

The usage_arguments method renders all registered arguments for use in the CLI "usage" text.

usage_arguments() (string)

{ since => '4.15', }

=example-1 usage_arguments

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->argument('input', {
  type => 'string',
});

$cli->argument('output', {
  type => 'string',
});

my $usage_arguments = $cli->usage_arguments;

# Arguments:
#   [<input>]
#     Expects a string value
#     (optional)
#   [<output>]
#     Expects a string value
#     (optional)

The usage_choice_help method renders the help configuration value for the named choice for use in the CLI "usage" text.

usage_choice_help(string $name) (string)

{ since => '4.15', }

=example-1 usage_choice_help

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_choice_help = $cli->usage_choice_help;

# ""

The usage_choice_label method renders the label configuration value for the named choice for use in the CLI "usage" text.

usage_choice_label(string $name) (string)

{ since => '4.15', }

=example-1 usage_choice_label

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_choice_label = $cli->usage_choice_label;

# ""

The usage_choice_required method renders the required configuration value for the named choice for use in the CLI "usage" text.

usage_choice_required(string $name) (string)

{ since => '4.15', }

=example-1 usage_choice_required

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_choice_required = $cli->usage_choice_required;

# ""

The usage_choices method renders all registered choices for use in the CLI "usage" text.

usage_choices() (string)

{ since => '4.15', }

=example-1 usage_choices

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->argument('input', {
  type => 'string',
});

$cli->choice('stdin', {
  argument => 'input',
});

$cli->argument('output', {
  type => 'string',
});

$cli->choice('stdout', {
  argument => 'output',
});

my $usage_choices = $cli->usage_choices;

# Choices for [<input>]:
#   stdin
#     Expects a string value
#     [<input>]
#
# Choices for [<output>]:
#   stdout
#     Expects a string value
#     [<output>]

The usage_description method renders the description for use in the CLI "usage" text.

usage_description() (string)

{ since => '4.15', }

=example-1 usage_description

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $description = $cli->description('Example description');

my $usage_description = $cli->usage_description;

# "Example description"

The usage_footer method renders the footer for use in the CLI "usage" text.

usage_footer() (string)

{ since => '4.15', }

=example-1 usage_footer

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $footer = $cli->footer('Example footer');

my $usage_footer = $cli->usage_footer;

# "Example footer"

The usage_gist method renders the CLI top-line describing the name, version, and/or summary.

usage_gist() (string)

{ since => '4.15', }

=example-1 usage_gist

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_gist = $cli->usage_gist;

# ""

The usage_header method renders the header for use in the CLI "usage" text.

usage_header() (string)

{ since => '4.15', }

=example-1 usage_header

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $header = $cli->header('Example header');

my $usage_header = $cli->usage_header;

# "Example header"

The usage_line method renders the CLI usage line for use in the CLI "usage" text.

usage_line() (string)

{ since => '4.15', }

=example-1 usage_line

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_line = $cli->usage_line;

# "Usage: mycli"

The usage_name method renders the CLI name for use in the CLI "usage" text.

usage_name() (string)

{ since => '4.15', }

=example-1 usage_name

package main;

use Venus::Cli;

my $cli = Venus::Cli->new;

my $usage_name = $cli->usage_name;

# ""

The usage_option_default method renders the default configuration value for the named option for use in the CLI "usage" text.

usage_option_default(string $name) (string)

{ since => '4.15', }

=example-1 usage_option_default

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_option_default = $cli->usage_option_default;

# ""

The usage_option_help method renders the help configuration value for the named option for use in the CLI "usage" text.

usage_option_help(string $name) (string)

{ since => '4.15', }

=example-1 usage_option_help

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_option_help = $cli->usage_option_help;

# ""

The usage_option_label method renders the label configuration value for the named option for use in the CLI "usage" text.

usage_option_label(string $name) (string)

{ since => '4.15', }

=example-1 usage_option_label

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_option_label = $cli->usage_option_label;

# ""

The usage_option_required method renders the required configuration value for the named option for use in the CLI "usage" text.

usage_option_required(string $name) (string)

{ since => '4.15', }

=example-1 usage_option_required

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_option_required = $cli->usage_option_required;

# "(optional)"

The usage_option_token method renders the token configuration value for the named option for use in the CLI "usage" text.

usage_option_token(string $name) (string)

{ since => '4.15', }

=example-1 usage_option_token

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $usage_option_token = $cli->usage_option_token;

# ""

The usage_options method renders all registered options for use in the CLI "usage" text.

usage_options() (string)

{ since => '4.15', }

=example-1 usage_options

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

$cli->option('input', {
  type => 'string',
});

$cli->option('output', {
  type => 'string',
});

my $usage_options = $cli->usage_options;

# Options:
#   [--input=<string>]
#     Expects a string value
#     (optional)
#   [--output=<string>]
#     Expects a string value
#     (optional)

The usage_summary method renders the summary for use in the CLI "usage" text.

usage_summary() (string)

{ since => '4.15', }

=example-1 usage_summary

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $summary = $cli->summary('Example summary');

my $usage_summary = $cli->usage_summary;

# "Example summary"

The usage_version method renders the description for use in the CLI "usage" text.

usage_version() (string)

{ since => '4.15', }

=example-1 usage_version

package main;

use Venus::Cli;

my $cli = Venus::Cli->new(name => 'mycli');

my $version = $cli->version('0.0.1');

my $usage_version = $cli->usage_version;

# "0.0.1"

The vars method returns the list of parsed command-line options as a Venus::Vars object.

vars() (Venus::Vars)

{ since => '4.15', }

=example-1 vars

# given: synopsis

package main;

my $vars = $cli->vars;

# bless(..., "Venus::Vars")

The yesno method is a configuration dispatcher and shorthand for {'type', 'yesno'}. It returns the data or dispatches to the next configuration dispatcher based on the name provided and merges the configurations produced.

yesno(string $method, any @args) (any)

{ since => '4.15', }

t/Venus.t: present: authors t/Venus.t: present: license

861 POD Errors

The following errors were encountered while parsing the POD:

Around line 14:

Unknown directive: =name

Around line 22:

Unknown directive: =tagline

Around line 30:

Unknown directive: =abstract

Around line 38:

Unknown directive: =includes

Around line 222:

Unknown directive: =synopsis

Around line 248:

Unknown directive: =description

Around line 257:

Unknown directive: =inherits

Around line 265:

Unknown directive: =integrates

Around line 273:

Unknown directive: =attribute

Around line 277:

Unknown directive: =signature

Around line 281:

Unknown directive: =metadata

Around line 299:

=cut found outside a pod block. Skipping to next block.

Around line 321:

=cut found outside a pod block. Skipping to next block.

Around line 331:

Unknown directive: =attribute

Around line 336:

Unknown directive: =signature

Around line 340:

Unknown directive: =metadata

Around line 358:

=cut found outside a pod block. Skipping to next block.

Around line 380:

=cut found outside a pod block. Skipping to next block.

Around line 390:

Unknown directive: =attribute

Around line 395:

Unknown directive: =signature

Around line 399:

Unknown directive: =metadata

Around line 417:

=cut found outside a pod block. Skipping to next block.

Around line 439:

=cut found outside a pod block. Skipping to next block.

Around line 449:

Unknown directive: =attribute

Around line 454:

Unknown directive: =signature

Around line 458:

Unknown directive: =metadata

Around line 476:

=cut found outside a pod block. Skipping to next block.

Around line 498:

=cut found outside a pod block. Skipping to next block.

Around line 508:

Unknown directive: =attribute

Around line 513:

Unknown directive: =signature

Around line 517:

Unknown directive: =metadata

Around line 535:

=cut found outside a pod block. Skipping to next block.

Around line 557:

=cut found outside a pod block. Skipping to next block.

Around line 567:

Unknown directive: =attribute

Around line 572:

Unknown directive: =signature

Around line 576:

Unknown directive: =metadata

Around line 594:

=cut found outside a pod block. Skipping to next block.

Around line 616:

=cut found outside a pod block. Skipping to next block.

Around line 626:

Unknown directive: =attribute

Around line 631:

Unknown directive: =signature

Around line 635:

Unknown directive: =metadata

Around line 653:

=cut found outside a pod block. Skipping to next block.

Around line 675:

=cut found outside a pod block. Skipping to next block.

Around line 685:

Unknown directive: =attribute

Around line 690:

Unknown directive: =signature

Around line 694:

Unknown directive: =metadata

Around line 712:

=cut found outside a pod block. Skipping to next block.

Around line 734:

=cut found outside a pod block. Skipping to next block.

Around line 744:

Unknown directive: =attribute

Around line 749:

Unknown directive: =signature

Around line 753:

Unknown directive: =metadata

Around line 771:

=cut found outside a pod block. Skipping to next block.

Around line 793:

=cut found outside a pod block. Skipping to next block.

Around line 803:

Unknown directive: =attribute

Around line 808:

Unknown directive: =signature

Around line 812:

Unknown directive: =metadata

Around line 830:

=cut found outside a pod block. Skipping to next block.

Around line 852:

=cut found outside a pod block. Skipping to next block.

Around line 862:

Unknown directive: =method

Around line 867:

Unknown directive: =signature

Around line 871:

Unknown directive: =metadata

Around line 889:

=cut found outside a pod block. Skipping to next block.

Around line 915:

=cut found outside a pod block. Skipping to next block.

Around line 927:

Unknown directive: =method

Around line 985:

Unknown directive: =signature

Around line 989:

Unknown directive: =metadata

Around line 1025:

=cut found outside a pod block. Skipping to next block.

Around line 1047:

Unknown directive: =method

Around line 1054:

Unknown directive: =signature

Around line 1058:

Unknown directive: =metadata

Around line 1078:

=cut found outside a pod block. Skipping to next block.

Around line 1107:

=cut found outside a pod block. Skipping to next block.

Around line 1144:

=cut found outside a pod block. Skipping to next block.

Around line 1182:

=cut found outside a pod block. Skipping to next block.

Around line 1192:

Unknown directive: =method

Around line 1197:

Unknown directive: =signature

Around line 1201:

Unknown directive: =metadata

Around line 1221:

=cut found outside a pod block. Skipping to next block.

Around line 1247:

=cut found outside a pod block. Skipping to next block.

Around line 1284:

=cut found outside a pod block. Skipping to next block.

Around line 1301:

Unknown directive: =method

Around line 1305:

Unknown directive: =signature

Around line 1309:

Unknown directive: =metadata

Around line 1357:

=cut found outside a pod block. Skipping to next block.

Around line 1367:

Unknown directive: =method

Around line 1372:

Unknown directive: =signature

Around line 1376:

Unknown directive: =metadata

Around line 1420:

=cut found outside a pod block. Skipping to next block.

Around line 1430:

Unknown directive: =method

Around line 1436:

Unknown directive: =signature

Around line 1440:

Unknown directive: =metadata

Around line 1487:

=cut found outside a pod block. Skipping to next block.

Around line 1516:

=cut found outside a pod block. Skipping to next block.

Around line 1526:

Unknown directive: =method

Around line 1531:

Unknown directive: =signature

Around line 1535:

Unknown directive: =metadata

Around line 1579:

=cut found outside a pod block. Skipping to next block.

Around line 1589:

Unknown directive: =method

Around line 1594:

Unknown directive: =signature

Around line 1598:

Unknown directive: =metadata

Around line 1642:

=cut found outside a pod block. Skipping to next block.

Around line 1652:

Unknown directive: =method

Around line 1657:

Unknown directive: =signature

Around line 1661:

Unknown directive: =metadata

Around line 1717:

=cut found outside a pod block. Skipping to next block.

Around line 1739:

Unknown directive: =method

Around line 1744:

Unknown directive: =signature

Around line 1748:

Unknown directive: =metadata

Around line 1792:

=cut found outside a pod block. Skipping to next block.

Around line 1802:

Unknown directive: =method

Around line 1807:

Unknown directive: =signature

Around line 1811:

Unknown directive: =metadata

Around line 1855:

=cut found outside a pod block. Skipping to next block.

Around line 1881:

=cut found outside a pod block. Skipping to next block.

Around line 1891:

Unknown directive: =method

Around line 1896:

Unknown directive: =signature

Around line 1900:

Unknown directive: =metadata

Around line 1948:

=cut found outside a pod block. Skipping to next block.

Around line 1978:

=cut found outside a pod block. Skipping to next block.

Around line 1988:

Unknown directive: =method

Around line 1993:

Unknown directive: =signature

Around line 1997:

Unknown directive: =metadata

Around line 2041:

=cut found outside a pod block. Skipping to next block.

Around line 2051:

Unknown directive: =method

Around line 2056:

Unknown directive: =signature

Around line 2060:

Unknown directive: =metadata

Around line 2104:

=cut found outside a pod block. Skipping to next block.

Around line 2130:

=cut found outside a pod block. Skipping to next block.

Around line 2140:

Unknown directive: =method

Around line 2145:

Unknown directive: =signature

Around line 2149:

Unknown directive: =metadata

Around line 2193:

=cut found outside a pod block. Skipping to next block.

Around line 2203:

Unknown directive: =method

Around line 2232:

Unknown directive: =signature

Around line 2236:

Unknown directive: =metadata

Around line 2280:

=cut found outside a pod block. Skipping to next block.

Around line 2290:

Unknown directive: =method

Around line 2296:

Unknown directive: =signature

Around line 2300:

Unknown directive: =metadata

Around line 2346:

=cut found outside a pod block. Skipping to next block.

Around line 2376:

=cut found outside a pod block. Skipping to next block.

Around line 2406:

=cut found outside a pod block. Skipping to next block.

Around line 2419:

Unknown directive: =method

Around line 2424:

Unknown directive: =signature

Around line 2428:

Unknown directive: =metadata

Around line 2476:

=cut found outside a pod block. Skipping to next block.

Around line 2506:

=cut found outside a pod block. Skipping to next block.

Around line 2516:

Unknown directive: =method

Around line 2521:

Unknown directive: =signature

Around line 2525:

Unknown directive: =metadata

Around line 2569:

=cut found outside a pod block. Skipping to next block.

Around line 2579:

Unknown directive: =method

Around line 2583:

Unknown directive: =signature

Around line 2587:

Unknown directive: =metadata

Around line 2658:

=cut found outside a pod block. Skipping to next block.

Around line 2668:

Unknown directive: =method

Around line 2672:

Unknown directive: =signature

Around line 2676:

Unknown directive: =metadata

Around line 2748:

=cut found outside a pod block. Skipping to next block.

Around line 2758:

Unknown directive: =method

Around line 2764:

Unknown directive: =signature

Around line 2768:

Unknown directive: =metadata

Around line 2786:

=cut found outside a pod block. Skipping to next block.

Around line 2806:

=cut found outside a pod block. Skipping to next block.

Around line 2839:

=cut found outside a pod block. Skipping to next block.

Around line 2862:

Unknown directive: =method

Around line 2895:

Unknown directive: =signature

Around line 2899:

Unknown directive: =metadata

Around line 2948:

Unknown directive: =method

Around line 2953:

Unknown directive: =signature

Around line 2957:

Unknown directive: =metadata

Around line 3017:

Unknown directive: =method

Around line 3021:

Unknown directive: =signature

Around line 3025:

Unknown directive: =metadata

Around line 3078:

=cut found outside a pod block. Skipping to next block.

Around line 3088:

Unknown directive: =method

Around line 3093:

Unknown directive: =signature

Around line 3097:

Unknown directive: =metadata

Around line 3134:

Unknown directive: =method

Around line 3140:

Unknown directive: =signature

Around line 3144:

Unknown directive: =metadata

Around line 3195:

=cut found outside a pod block. Skipping to next block.

Around line 3228:

=cut found outside a pod block. Skipping to next block.

Around line 3238:

Unknown directive: =method

Around line 3243:

Unknown directive: =signature

Around line 3247:

Unknown directive: =metadata

Around line 3296:

=cut found outside a pod block. Skipping to next block.

Around line 3306:

Unknown directive: =method

Around line 3311:

Unknown directive: =signature

Around line 3315:

Unknown directive: =metadata

Around line 3364:

=cut found outside a pod block. Skipping to next block.

Around line 3374:

Unknown directive: =method

Around line 3379:

Unknown directive: =signature

Around line 3383:

Unknown directive: =metadata

Around line 3438:

=cut found outside a pod block. Skipping to next block.

Around line 3455:

Unknown directive: =method

Around line 3460:

Unknown directive: =signature

Around line 3464:

Unknown directive: =metadata

Around line 3513:

=cut found outside a pod block. Skipping to next block.

Around line 3523:

Unknown directive: =method

Around line 3528:

Unknown directive: =signature

Around line 3532:

Unknown directive: =metadata

Around line 3581:

=cut found outside a pod block. Skipping to next block.

Around line 3591:

Unknown directive: =method

Around line 3596:

Unknown directive: =signature

Around line 3600:

Unknown directive: =metadata

Around line 3652:

=cut found outside a pod block. Skipping to next block.

Around line 3686:

=cut found outside a pod block. Skipping to next block.

Around line 3696:

Unknown directive: =method

Around line 3701:

Unknown directive: =signature

Around line 3705:

Unknown directive: =metadata

Around line 3754:

=cut found outside a pod block. Skipping to next block.

Around line 3764:

Unknown directive: =method

Around line 3769:

Unknown directive: =signature

Around line 3773:

Unknown directive: =metadata

Around line 3822:

=cut found outside a pod block. Skipping to next block.

Around line 3832:

Unknown directive: =method

Around line 3837:

Unknown directive: =signature

Around line 3841:

Unknown directive: =metadata

Around line 3890:

=cut found outside a pod block. Skipping to next block.

Around line 3900:

Unknown directive: =method

Around line 3905:

Unknown directive: =signature

Around line 3909:

Unknown directive: =metadata

Around line 3957:

=cut found outside a pod block. Skipping to next block.

Around line 3967:

Unknown directive: =method

Around line 3973:

Unknown directive: =signature

Around line 3977:

Unknown directive: =metadata

Around line 4027:

=cut found outside a pod block. Skipping to next block.

Around line 4061:

=cut found outside a pod block. Skipping to next block.

Around line 4095:

=cut found outside a pod block. Skipping to next block.

Around line 4108:

Unknown directive: =method

Around line 4113:

Unknown directive: =signature

Around line 4117:

Unknown directive: =metadata

Around line 4169:

=cut found outside a pod block. Skipping to next block.

Around line 4203:

=cut found outside a pod block. Skipping to next block.

Around line 4213:

Unknown directive: =method

Around line 4218:

Unknown directive: =signature

Around line 4222:

Unknown directive: =metadata

Around line 4270:

=cut found outside a pod block. Skipping to next block.

Around line 4280:

Unknown directive: =method

Around line 4287:

Unknown directive: =signature

Around line 4291:

Unknown directive: =metadata

Around line 4358:

=cut found outside a pod block. Skipping to next block.

Around line 4398:

=cut found outside a pod block. Skipping to next block.

Around line 4436:

=cut found outside a pod block. Skipping to next block.

Around line 4447:

Unknown directive: =method

Around line 4459:

Unknown directive: =signature

Around line 4463:

Unknown directive: =metadata

Around line 4505:

=cut found outside a pod block. Skipping to next block.

Around line 4537:

=cut found outside a pod block. Skipping to next block.

Around line 4563:

=cut found outside a pod block. Skipping to next block.

Around line 4589:

=cut found outside a pod block. Skipping to next block.

Around line 4615:

=cut found outside a pod block. Skipping to next block.

Around line 4647:

=cut found outside a pod block. Skipping to next block.

Around line 4671:

=cut found outside a pod block. Skipping to next block.

Around line 4681:

Unknown directive: =method

Around line 4689:

Unknown directive: =signature

Around line 4693:

Unknown directive: =metadata

Around line 4713:

=cut found outside a pod block. Skipping to next block.

Around line 4744:

=cut found outside a pod block. Skipping to next block.

Around line 4777:

=cut found outside a pod block. Skipping to next block.

Around line 4804:

Unknown directive: =method

Around line 4812:

Unknown directive: =signature

Around line 4816:

Unknown directive: =metadata

Around line 4836:

=cut found outside a pod block. Skipping to next block.

Around line 4869:

=cut found outside a pod block. Skipping to next block.

Around line 4896:

Unknown directive: =method

Around line 4902:

Unknown directive: =signature

Around line 4906:

Unknown directive: =metadata

Around line 4924:

=cut found outside a pod block. Skipping to next block.

Around line 4944:

=cut found outside a pod block. Skipping to next block.

Around line 4977:

=cut found outside a pod block. Skipping to next block.

Around line 5000:

Unknown directive: =method

Around line 5005:

Unknown directive: =signature

Around line 5009:

Unknown directive: =metadata

Around line 5063:

=cut found outside a pod block. Skipping to next block.

Around line 5073:

Unknown directive: =method

Around line 5078:

Unknown directive: =signature

Around line 5082:

Unknown directive: =metadata

Around line 5146:

=cut found outside a pod block. Skipping to next block.

Around line 5156:

Unknown directive: =method

Around line 5161:

Unknown directive: =signature

Around line 5165:

Unknown directive: =metadata

Around line 5229:

=cut found outside a pod block. Skipping to next block.

Around line 5239:

Unknown directive: =method

Around line 5244:

Unknown directive: =signature

Around line 5248:

Unknown directive: =metadata

Around line 5312:

=cut found outside a pod block. Skipping to next block.

Around line 5322:

Unknown directive: =method

Around line 5327:

Unknown directive: =signature

Around line 5331:

Unknown directive: =metadata

Around line 5397:

=cut found outside a pod block. Skipping to next block.

Around line 5407:

Unknown directive: =method

Around line 5412:

Unknown directive: =signature

Around line 5416:

Unknown directive: =metadata

Around line 5472:

=cut found outside a pod block. Skipping to next block.

Around line 5482:

Unknown directive: =method

Around line 5487:

Unknown directive: =signature

Around line 5491:

Unknown directive: =metadata

Around line 5547:

=cut found outside a pod block. Skipping to next block.

Around line 5557:

Unknown directive: =method

Around line 5562:

Unknown directive: =signature

Around line 5566:

Unknown directive: =metadata

Around line 5622:

=cut found outside a pod block. Skipping to next block.

Around line 5632:

Unknown directive: =method

Around line 5637:

Unknown directive: =signature

Around line 5641:

Unknown directive: =metadata

Around line 5697:

=cut found outside a pod block. Skipping to next block.

Around line 5707:

Unknown directive: =method

Around line 5712:

Unknown directive: =signature

Around line 5716:

Unknown directive: =metadata

Around line 5772:

=cut found outside a pod block. Skipping to next block.

Around line 5782:

Unknown directive: =method

Around line 5786:

Unknown directive: =signature

Around line 5790:

Unknown directive: =metadata

Around line 5825:

Unknown directive: =method

Around line 5831:

Unknown directive: =signature

Around line 5835:

Unknown directive: =metadata

Around line 5900:

=cut found outside a pod block. Skipping to next block.

Around line 5910:

Unknown directive: =method

Around line 5915:

Unknown directive: =signature

Around line 5919:

Unknown directive: =metadata

Around line 5985:

=cut found outside a pod block. Skipping to next block.

Around line 5995:

Unknown directive: =method

Around line 6000:

Unknown directive: =signature

Around line 6004:

Unknown directive: =metadata

Around line 6068:

=cut found outside a pod block. Skipping to next block.

Around line 6078:

Unknown directive: =method

Around line 6083:

Unknown directive: =signature

Around line 6087:

Unknown directive: =metadata

Around line 6153:

=cut found outside a pod block. Skipping to next block.

Around line 6163:

Unknown directive: =method

Around line 6168:

Unknown directive: =signature

Around line 6172:

Unknown directive: =metadata

Around line 6238:

=cut found outside a pod block. Skipping to next block.

Around line 6248:

Unknown directive: =method

Around line 6253:

Unknown directive: =signature

Around line 6257:

Unknown directive: =metadata

Around line 6323:

=cut found outside a pod block. Skipping to next block.

Around line 6333:

Unknown directive: =method

Around line 6339:

Unknown directive: =signature

Around line 6343:

Unknown directive: =metadata

Around line 6409:

=cut found outside a pod block. Skipping to next block.

Around line 6419:

Unknown directive: =method

Around line 6424:

Unknown directive: =signature

Around line 6428:

Unknown directive: =metadata

Around line 6482:

=cut found outside a pod block. Skipping to next block.

Around line 6492:

Unknown directive: =method

Around line 6497:

Unknown directive: =signature

Around line 6501:

Unknown directive: =metadata

Around line 6555:

=cut found outside a pod block. Skipping to next block.

Around line 6565:

Unknown directive: =method

Around line 6570:

Unknown directive: =signature

Around line 6574:

Unknown directive: =metadata

Around line 6628:

=cut found outside a pod block. Skipping to next block.

Around line 6638:

Unknown directive: =method

Around line 6643:

Unknown directive: =signature

Around line 6647:

Unknown directive: =metadata

Around line 6701:

=cut found outside a pod block. Skipping to next block.

Around line 6711:

Unknown directive: =method

Around line 6716:

Unknown directive: =signature

Around line 6720:

Unknown directive: =metadata

Around line 6774:

=cut found outside a pod block. Skipping to next block.

Around line 6784:

Unknown directive: =method

Around line 6790:

Unknown directive: =signature

Around line 6794:

Unknown directive: =metadata

Around line 6848:

=cut found outside a pod block. Skipping to next block.

Around line 6878:

=cut found outside a pod block. Skipping to next block.

Around line 6888:

Unknown directive: =method

Around line 6896:

Unknown directive: =signature

Around line 6900:

Unknown directive: =metadata

Around line 6927:

=cut found outside a pod block. Skipping to next block.

Around line 6942:

Unknown directive: =method

Around line 6947:

Unknown directive: =signature

Around line 6951:

Unknown directive: =metadata

Around line 6971:

=cut found outside a pod block. Skipping to next block.

Around line 6981:

Unknown directive: =method

Around line 6986:

Unknown directive: =signature

Around line 6990:

Unknown directive: =metadata

Around line 7022:

Unknown directive: =method

Around line 7027:

Unknown directive: =signature

Around line 7031:

Unknown directive: =metadata

Around line 7063:

Unknown directive: =method

Around line 7068:

Unknown directive: =signature

Around line 7072:

Unknown directive: =metadata

Around line 7104:

Unknown directive: =method

Around line 7109:

Unknown directive: =signature

Around line 7113:

Unknown directive: =metadata

Around line 7145:

Unknown directive: =method

Around line 7150:

Unknown directive: =signature

Around line 7154:

Unknown directive: =metadata

Around line 7212:

=cut found outside a pod block. Skipping to next block.

Around line 7227:

Unknown directive: =method

Around line 7233:

Unknown directive: =signature

Around line 7237:

Unknown directive: =metadata

Around line 7265:

Unknown directive: =method

Around line 7270:

Unknown directive: =signature

Around line 7274:

Unknown directive: =metadata

Around line 7306:

Unknown directive: =method

Around line 7311:

Unknown directive: =signature

Around line 7315:

Unknown directive: =metadata

Around line 7343:

Unknown directive: =method

Around line 7348:

Unknown directive: =signature

Around line 7352:

Unknown directive: =metadata

Around line 7384:

Unknown directive: =method

Around line 7389:

Unknown directive: =signature

Around line 7393:

Unknown directive: =metadata

Around line 7425:

Unknown directive: =method

Around line 7432:

Unknown directive: =signature

Around line 7436:

Unknown directive: =metadata

Around line 7454:

=cut found outside a pod block. Skipping to next block.

Around line 7474:

=cut found outside a pod block. Skipping to next block.

Around line 7507:

=cut found outside a pod block. Skipping to next block.

Around line 7530:

Unknown directive: =method

Around line 7534:

Unknown directive: =signature

Around line 7538:

Unknown directive: =metadata

Around line 7583:

=cut found outside a pod block. Skipping to next block.

Around line 7594:

Unknown directive: =method

Around line 7599:

Unknown directive: =signature

Around line 7603:

Unknown directive: =metadata

Around line 7657:

=cut found outside a pod block. Skipping to next block.

Around line 7667:

Unknown directive: =method

Around line 7672:

Unknown directive: =signature

Around line 7676:

Unknown directive: =metadata

Around line 7742:

=cut found outside a pod block. Skipping to next block.

Around line 7752:

Unknown directive: =method

Around line 7757:

Unknown directive: =signature

Around line 7761:

Unknown directive: =metadata

Around line 7815:

=cut found outside a pod block. Skipping to next block.

Around line 7825:

Unknown directive: =method

Around line 7830:

Unknown directive: =signature

Around line 7834:

Unknown directive: =metadata

Around line 7872:

=cut found outside a pod block. Skipping to next block.

Around line 7882:

Unknown directive: =method

Around line 7887:

Unknown directive: =signature

Around line 7891:

Unknown directive: =metadata

Around line 7931:

=cut found outside a pod block. Skipping to next block.

Around line 7941:

Unknown directive: =method

Around line 7946:

Unknown directive: =signature

Around line 7950:

Unknown directive: =metadata

Around line 7990:

=cut found outside a pod block. Skipping to next block.

Around line 8000:

Unknown directive: =method

Around line 8005:

Unknown directive: =signature

Around line 8009:

Unknown directive: =metadata

Around line 8049:

=cut found outside a pod block. Skipping to next block.

Around line 8059:

Unknown directive: =method

Around line 8064:

Unknown directive: =signature

Around line 8068:

Unknown directive: =metadata

Around line 8108:

=cut found outside a pod block. Skipping to next block.

Around line 8118:

Unknown directive: =method

Around line 8123:

Unknown directive: =signature

Around line 8127:

Unknown directive: =metadata

Around line 8167:

=cut found outside a pod block. Skipping to next block.

Around line 8177:

Unknown directive: =method

Around line 8182:

Unknown directive: =signature

Around line 8186:

Unknown directive: =metadata

Around line 8226:

=cut found outside a pod block. Skipping to next block.

Around line 8236:

Unknown directive: =method

Around line 8242:

Unknown directive: =signature

Around line 8246:

Unknown directive: =metadata

Around line 8264:

=cut found outside a pod block. Skipping to next block.

Around line 8284:

=cut found outside a pod block. Skipping to next block.

Around line 8317:

=cut found outside a pod block. Skipping to next block.

Around line 8340:

Unknown directive: =method

Around line 8348:

Unknown directive: =signature

Around line 8352:

Unknown directive: =metadata

Around line 8372:

=cut found outside a pod block. Skipping to next block.

Around line 8405:

=cut found outside a pod block. Skipping to next block.

Around line 8432:

Unknown directive: =method

Around line 8501:

Unknown directive: =signature

Around line 8505:

Unknown directive: =metadata

Around line 8542:

=cut found outside a pod block. Skipping to next block.

Around line 8565:

Unknown directive: =method

Around line 8570:

Unknown directive: =signature

Around line 8574:

Unknown directive: =metadata

Around line 8619:

=cut found outside a pod block. Skipping to next block.

Around line 8646:

=cut found outside a pod block. Skipping to next block.

Around line 8673:

=cut found outside a pod block. Skipping to next block.

Around line 8683:

Unknown directive: =method

Around line 8687:

Unknown directive: =signature

Around line 8691:

Unknown directive: =metadata

Around line 8739:

=cut found outside a pod block. Skipping to next block.

Around line 8749:

Unknown directive: =method

Around line 8754:

Unknown directive: =signature

Around line 8758:

Unknown directive: =metadata

Around line 8802:

=cut found outside a pod block. Skipping to next block.

Around line 8812:

Unknown directive: =method

Around line 8818:

Unknown directive: =signature

Around line 8822:

Unknown directive: =metadata

Around line 8868:

=cut found outside a pod block. Skipping to next block.

Around line 8897:

=cut found outside a pod block. Skipping to next block.

Around line 8907:

Unknown directive: =method

Around line 8912:

Unknown directive: =signature

Around line 8916:

Unknown directive: =metadata

Around line 8960:

=cut found outside a pod block. Skipping to next block.

Around line 8970:

Unknown directive: =method

Around line 8975:

Unknown directive: =signature

Around line 8979:

Unknown directive: =metadata

Around line 9023:

=cut found outside a pod block. Skipping to next block.

Around line 9033:

Unknown directive: =method

Around line 9038:

Unknown directive: =signature

Around line 9042:

Unknown directive: =metadata

Around line 9099:

=cut found outside a pod block. Skipping to next block.

Around line 9122:

Unknown directive: =method

Around line 9127:

Unknown directive: =signature

Around line 9131:

Unknown directive: =metadata

Around line 9175:

=cut found outside a pod block. Skipping to next block.

Around line 9185:

Unknown directive: =method

Around line 9190:

Unknown directive: =signature

Around line 9194:

Unknown directive: =metadata

Around line 9238:

=cut found outside a pod block. Skipping to next block.

Around line 9264:

=cut found outside a pod block. Skipping to next block.

Around line 9274:

Unknown directive: =method

Around line 9279:

Unknown directive: =signature

Around line 9283:

Unknown directive: =metadata

Around line 9331:

=cut found outside a pod block. Skipping to next block.

Around line 9361:

=cut found outside a pod block. Skipping to next block.

Around line 9371:

Unknown directive: =method

Around line 9376:

Unknown directive: =signature

Around line 9380:

Unknown directive: =metadata

Around line 9424:

=cut found outside a pod block. Skipping to next block.

Around line 9434:

Unknown directive: =method

Around line 9439:

Unknown directive: =signature

Around line 9443:

Unknown directive: =metadata

Around line 9487:

=cut found outside a pod block. Skipping to next block.

Around line 9513:

=cut found outside a pod block. Skipping to next block.

Around line 9523:

Unknown directive: =method

Around line 9528:

Unknown directive: =signature

Around line 9532:

Unknown directive: =metadata

Around line 9576:

=cut found outside a pod block. Skipping to next block.

Around line 9586:

Unknown directive: =method

Around line 9615:

Unknown directive: =signature

Around line 9619:

Unknown directive: =metadata

Around line 9663:

=cut found outside a pod block. Skipping to next block.

Around line 9673:

Unknown directive: =method

Around line 9679:

Unknown directive: =signature

Around line 9683:

Unknown directive: =metadata

Around line 9728:

=cut found outside a pod block. Skipping to next block.

Around line 9757:

=cut found outside a pod block. Skipping to next block.

Around line 9786:

=cut found outside a pod block. Skipping to next block.

Around line 9799:

Unknown directive: =method

Around line 9804:

Unknown directive: =signature

Around line 9808:

Unknown directive: =metadata

Around line 9855:

=cut found outside a pod block. Skipping to next block.

Around line 9884:

=cut found outside a pod block. Skipping to next block.

Around line 9894:

Unknown directive: =method

Around line 9899:

Unknown directive: =signature

Around line 9903:

Unknown directive: =metadata

Around line 9947:

=cut found outside a pod block. Skipping to next block.

Around line 9957:

Unknown directive: =method

Around line 9964:

Unknown directive: =signature

Around line 9968:

Unknown directive: =metadata

Around line 9986:

=cut found outside a pod block. Skipping to next block.

Around line 10006:

=cut found outside a pod block. Skipping to next block.

Around line 10039:

=cut found outside a pod block. Skipping to next block.

Around line 10062:

Unknown directive: =method

Around line 10067:

Unknown directive: =signature

Around line 10071:

Unknown directive: =metadata

Around line 10115:

=cut found outside a pod block. Skipping to next block.

Around line 10126:

Unknown directive: =method

Around line 10132:

Unknown directive: =signature

Around line 10136:

Unknown directive: =metadata

Around line 10174:

=cut found outside a pod block. Skipping to next block.

Around line 10198:

=cut found outside a pod block. Skipping to next block.

Around line 10208:

Unknown directive: =method

Around line 10213:

Unknown directive: =signature

Around line 10217:

Unknown directive: =metadata

Around line 10257:

=cut found outside a pod block. Skipping to next block.

Around line 10281:

=cut found outside a pod block. Skipping to next block.

Around line 10305:

=cut found outside a pod block. Skipping to next block.

Around line 10315:

Unknown directive: =method

Around line 10320:

Unknown directive: =signature

Around line 10324:

Unknown directive: =metadata

Around line 10364:

=cut found outside a pod block. Skipping to next block.

Around line 10388:

=cut found outside a pod block. Skipping to next block.

Around line 10412:

=cut found outside a pod block. Skipping to next block.

Around line 10422:

Unknown directive: =method

Around line 10427:

Unknown directive: =signature

Around line 10431:

Unknown directive: =metadata

Around line 10471:

=cut found outside a pod block. Skipping to next block.

Around line 10495:

=cut found outside a pod block. Skipping to next block.

Around line 10519:

=cut found outside a pod block. Skipping to next block.

Around line 10529:

Unknown directive: =method

Around line 10534:

Unknown directive: =signature

Around line 10538:

Unknown directive: =metadata

Around line 10578:

=cut found outside a pod block. Skipping to next block.

Around line 10602:

=cut found outside a pod block. Skipping to next block.

Around line 10626:

=cut found outside a pod block. Skipping to next block.

Around line 10636:

Unknown directive: =method

Around line 10641:

Unknown directive: =signature

Around line 10645:

Unknown directive: =metadata

Around line 10685:

=cut found outside a pod block. Skipping to next block.

Around line 10709:

=cut found outside a pod block. Skipping to next block.

Around line 10733:

=cut found outside a pod block. Skipping to next block.

Around line 10743:

Unknown directive: =method

Around line 10748:

Unknown directive: =signature

Around line 10752:

Unknown directive: =metadata

Around line 10792:

=cut found outside a pod block. Skipping to next block.

Around line 10816:

=cut found outside a pod block. Skipping to next block.

Around line 10840:

=cut found outside a pod block. Skipping to next block.

Around line 10850:

Unknown directive: =method

Around line 10857:

Unknown directive: =signature

Around line 10861:

Unknown directive: =metadata

Around line 10920:

=cut found outside a pod block. Skipping to next block.

Around line 10965:

=cut found outside a pod block. Skipping to next block.

Around line 10977:

Unknown directive: =method

Around line 10984:

Unknown directive: =signature

Around line 10988:

Unknown directive: =metadata

Around line 11031:

=cut found outside a pod block. Skipping to next block.

Around line 11056:

=cut found outside a pod block. Skipping to next block.

Around line 11094:

=cut found outside a pod block. Skipping to next block.

Around line 11132:

=cut found outside a pod block. Skipping to next block.

Around line 11143:

Unknown directive: =method

Around line 11148:

Unknown directive: =signature

Around line 11152:

Unknown directive: =metadata

Around line 11195:

Unknown directive: =method

Around line 11200:

Unknown directive: =signature

Around line 11204:

Unknown directive: =metadata

Around line 11247:

Unknown directive: =method

Around line 11255:

Unknown directive: =signature

Around line 11259:

Unknown directive: =metadata

Around line 11279:

=cut found outside a pod block. Skipping to next block.

Around line 11312:

=cut found outside a pod block. Skipping to next block.

Around line 11339:

Unknown directive: =method

Around line 11345:

Unknown directive: =signature

Around line 11349:

Unknown directive: =metadata

Around line 11412:

Unknown directive: =method

Around line 11417:

Unknown directive: =signature

Around line 11421:

Unknown directive: =metadata

Around line 11460:

Unknown directive: =method

Around line 11465:

Unknown directive: =signature

Around line 11469:

Unknown directive: =metadata

Around line 11520:

Unknown directive: =method

Around line 11525:

Unknown directive: =signature

Around line 11529:

Unknown directive: =metadata

Around line 11568:

Unknown directive: =method

Around line 11573:

Unknown directive: =signature

Around line 11577:

Unknown directive: =metadata

Around line 11616:

Unknown directive: =method

Around line 11663:

Unknown directive: =signature

Around line 11667:

Unknown directive: =metadata

Around line 11718:

=cut found outside a pod block. Skipping to next block.

Around line 11762:

=cut found outside a pod block. Skipping to next block.

Around line 11800:

=cut found outside a pod block. Skipping to next block.

Around line 11810:

Unknown directive: =method

Around line 11815:

Unknown directive: =signature

Around line 11819:

Unknown directive: =metadata

Around line 11871:

=cut found outside a pod block. Skipping to next block.

Around line 11881:

Unknown directive: =method

Around line 11885:

Unknown directive: =signature

Around line 11889:

Unknown directive: =metadata

Around line 11946:

=cut found outside a pod block. Skipping to next block.

Around line 11956:

Unknown directive: =method

Around line 11960:

Unknown directive: =signature

Around line 11964:

Unknown directive: =metadata

Around line 12012:

=cut found outside a pod block. Skipping to next block.

Around line 12022:

Unknown directive: =method

Around line 12026:

Unknown directive: =signature

Around line 12030:

Unknown directive: =metadata

Around line 12074:

=cut found outside a pod block. Skipping to next block.

Around line 12102:

=cut found outside a pod block. Skipping to next block.

Around line 12112:

Unknown directive: =method

Around line 12116:

Unknown directive: =signature

Around line 12120:

Unknown directive: =metadata

Around line 12165:

=cut found outside a pod block. Skipping to next block.

Around line 12175:

Unknown directive: =method

Around line 12179:

Unknown directive: =signature

Around line 12183:

Unknown directive: =metadata

Around line 12228:

=cut found outside a pod block. Skipping to next block.

Around line 12238:

Unknown directive: =method

Around line 12243:

Unknown directive: =signature

Around line 12247:

Unknown directive: =metadata

Around line 12298:

=cut found outside a pod block. Skipping to next block.

Around line 12310:

Unknown directive: =method

Around line 12314:

Unknown directive: =signature

Around line 12318:

Unknown directive: =metadata

Around line 12362:

=cut found outside a pod block. Skipping to next block.

Around line 12372:

Unknown directive: =method

Around line 12377:

Unknown directive: =signature

Around line 12381:

Unknown directive: =metadata

Around line 12429:

=cut found outside a pod block. Skipping to next block.

Around line 12439:

Unknown directive: =method

Around line 12443:

Unknown directive: =signature

Around line 12447:

Unknown directive: =metadata

Around line 12492:

=cut found outside a pod block. Skipping to next block.

Around line 12502:

Unknown directive: =method

Around line 12509:

Unknown directive: =signature

Around line 12513:

Unknown directive: =metadata

Around line 12531:

=cut found outside a pod block. Skipping to next block.

Around line 12551:

=cut found outside a pod block. Skipping to next block.

Around line 12584:

=cut found outside a pod block. Skipping to next block.

Around line 12607:

Unknown directive: =method

Around line 12612:

Unknown directive: =signature

Around line 12616:

Unknown directive: =metadata

Around line 12675:

=cut found outside a pod block. Skipping to next block.

Around line 12690:

Unknown directive: =method

Around line 12697:

Unknown directive: =signature

Around line 12701:

Unknown directive: =metadata

Around line 12719:

=cut found outside a pod block. Skipping to next block.

Around line 12739:

=cut found outside a pod block. Skipping to next block.

Around line 12772:

=cut found outside a pod block. Skipping to next block.

Around line 12795:

Unknown directive: =method

Around line 12802:

Unknown directive: =signature

Around line 12806:

Unknown directive: =metadata

Around line 12850:

=cut found outside a pod block. Skipping to next block.

Around line 12891:

=cut found outside a pod block. Skipping to next block.

Around line 12925:

=cut found outside a pod block. Skipping to next block.

Around line 12955:

=cut found outside a pod block. Skipping to next block.

Around line 13028:

=cut found outside a pod block. Skipping to next block.

Around line 13050:

Unknown directive: =method

Around line 13056:

Unknown directive: =signature

Around line 13060:

Unknown directive: =metadata

Around line 13078:

=cut found outside a pod block. Skipping to next block.

Around line 13098:

=cut found outside a pod block. Skipping to next block.

Around line 13131:

=cut found outside a pod block. Skipping to next block.

Around line 13154:

Unknown directive: =method

Around line 13161:

Unknown directive: =signature

Around line 13165:

Unknown directive: =metadata

Around line 13209:

=cut found outside a pod block. Skipping to next block.

Around line 13242:

=cut found outside a pod block. Skipping to next block.

Around line 13291:

=cut found outside a pod block. Skipping to next block.

Around line 13351:

=cut found outside a pod block. Skipping to next block.

Around line 13411:

=cut found outside a pod block. Skipping to next block.

Around line 13472:

=cut found outside a pod block. Skipping to next block.

Around line 13533:

=cut found outside a pod block. Skipping to next block.

Around line 13595:

=cut found outside a pod block. Skipping to next block.

Around line 13659:

=cut found outside a pod block. Skipping to next block.

Around line 13741:

=cut found outside a pod block. Skipping to next block.

Around line 13831:

=cut found outside a pod block. Skipping to next block.

Around line 13927:

=cut found outside a pod block. Skipping to next block.

Around line 14034:

=cut found outside a pod block. Skipping to next block.

Around line 14165:

=cut found outside a pod block. Skipping to next block.

Around line 14272:

=cut found outside a pod block. Skipping to next block.

Around line 14360:

=cut found outside a pod block. Skipping to next block.

Around line 14392:

Unknown directive: =method

Around line 14397:

Unknown directive: =signature

Around line 14401:

Unknown directive: =metadata

Around line 14445:

=cut found outside a pod block. Skipping to next block.

Around line 14471:

=cut found outside a pod block. Skipping to next block.

Around line 14481:

Unknown directive: =method

Around line 14486:

Unknown directive: =signature

Around line 14490:

Unknown directive: =metadata

Around line 14534:

=cut found outside a pod block. Skipping to next block.

Around line 14544:

Unknown directive: =method

Around line 14549:

Unknown directive: =signature

Around line 14553:

Unknown directive: =metadata

Around line 14597:

=cut found outside a pod block. Skipping to next block.

Around line 14607:

Unknown directive: =method

Around line 14612:

Unknown directive: =signature

Around line 14616:

Unknown directive: =metadata

Around line 14660:

=cut found outside a pod block. Skipping to next block.

Around line 14686:

=cut found outside a pod block. Skipping to next block.

Around line 14696:

Unknown directive: =method

Around line 14701:

Unknown directive: =signature

Around line 14705:

Unknown directive: =metadata

Around line 14751:

=cut found outside a pod block. Skipping to next block.

Around line 14779:

=cut found outside a pod block. Skipping to next block.

Around line 14807:

=cut found outside a pod block. Skipping to next block.

Around line 14835:

=cut found outside a pod block. Skipping to next block.

Around line 14845:

Unknown directive: =method

Around line 14850:

Unknown directive: =signature

Around line 14854:

Unknown directive: =metadata

Around line 14935:

=cut found outside a pod block. Skipping to next block.

Around line 14956:

Unknown directive: =method

Around line 14961:

Unknown directive: =signature

Around line 14965:

Unknown directive: =metadata

Around line 15013:

=cut found outside a pod block. Skipping to next block.

Around line 15044:

=cut found outside a pod block. Skipping to next block.

Around line 15054:

Unknown directive: =method

Around line 15059:

Unknown directive: =signature

Around line 15063:

Unknown directive: =metadata

Around line 15112:

=cut found outside a pod block. Skipping to next block.

Around line 15144:

=cut found outside a pod block. Skipping to next block.

Around line 15154:

Unknown directive: =method

Around line 15159:

Unknown directive: =signature

Around line 15163:

Unknown directive: =metadata

Around line 15211:

=cut found outside a pod block. Skipping to next block.

Around line 15241:

=cut found outside a pod block. Skipping to next block.

Around line 15251:

Unknown directive: =method

Around line 15256:

Unknown directive: =signature

Around line 15260:

Unknown directive: =metadata

Around line 15363:

=cut found outside a pod block. Skipping to next block.

Around line 15386:

Unknown directive: =method

Around line 15391:

Unknown directive: =signature

Around line 15395:

Unknown directive: =metadata

Around line 15425:

Unknown directive: =method

Around line 15429:

Unknown directive: =signature

Around line 15433:

Unknown directive: =metadata

Around line 15463:

Unknown directive: =method

Around line 15468:

Unknown directive: =signature

Around line 15472:

Unknown directive: =metadata

Around line 15514:

=cut found outside a pod block. Skipping to next block.

Around line 15538:

=cut found outside a pod block. Skipping to next block.

Around line 15564:

=cut found outside a pod block. Skipping to next block.

Around line 15574:

Unknown directive: =method

Around line 15578:

Unknown directive: =signature

Around line 15582:

Unknown directive: =metadata

Around line 15612:

Unknown directive: =method

Around line 15617:

Unknown directive: =signature

Around line 15621:

Unknown directive: =metadata

Around line 15665:

=cut found outside a pod block. Skipping to next block.

Around line 15695:

=cut found outside a pod block. Skipping to next block.

Around line 15727:

=cut found outside a pod block. Skipping to next block.

Around line 15760:

=cut found outside a pod block. Skipping to next block.

Around line 15770:

Unknown directive: =method

Around line 15774:

Unknown directive: =signature

Around line 15778:

Unknown directive: =metadata

Around line 15818:

=cut found outside a pod block. Skipping to next block.

Around line 15828:

Unknown directive: =method

Around line 15833:

Unknown directive: =signature

Around line 15837:

Unknown directive: =metadata

Around line 15881:

=cut found outside a pod block. Skipping to next block.

Around line 15907:

=cut found outside a pod block. Skipping to next block.

Around line 15917:

Unknown directive: =method

Around line 15922:

Unknown directive: =signature

Around line 15926:

Unknown directive: =metadata

Around line 15970:

=cut found outside a pod block. Skipping to next block.

Around line 15980:

Unknown directive: =method

Around line 15985:

Unknown directive: =signature

Around line 15989:

Unknown directive: =metadata

Around line 16033:

=cut found outside a pod block. Skipping to next block.

Around line 16060:

=cut found outside a pod block. Skipping to next block.

Around line 16088:

=cut found outside a pod block. Skipping to next block.

Around line 16117:

=cut found outside a pod block. Skipping to next block.

Around line 16143:

=cut found outside a pod block. Skipping to next block.

Around line 16170:

=cut found outside a pod block. Skipping to next block.

Around line 16198:

=cut found outside a pod block. Skipping to next block.

Around line 16227:

=cut found outside a pod block. Skipping to next block.

Around line 16256:

=cut found outside a pod block. Skipping to next block.

Around line 16266:

Unknown directive: =method

Around line 16271:

Unknown directive: =signature

Around line 16275:

Unknown directive: =metadata

Around line 16319:

=cut found outside a pod block. Skipping to next block.

Around line 16345:

=cut found outside a pod block. Skipping to next block.

Around line 16355:

Unknown directive: =method

Around line 16360:

Unknown directive: =signature

Around line 16364:

Unknown directive: =metadata

Around line 16408:

=cut found outside a pod block. Skipping to next block.

Around line 16435:

=cut found outside a pod block. Skipping to next block.

Around line 16461:

=cut found outside a pod block. Skipping to next block.

Around line 16488:

=cut found outside a pod block. Skipping to next block.

Around line 16498:

Unknown directive: =method

Around line 16503:

Unknown directive: =signature

Around line 16507:

Unknown directive: =metadata

Around line 16587:

=cut found outside a pod block. Skipping to next block.

Around line 16607:

Unknown directive: =method

Around line 16611:

Unknown directive: =signature

Around line 16615:

Unknown directive: =metadata

Around line 16645:

Unknown directive: =method

Around line 16650:

Unknown directive: =signature

Around line 16654:

Unknown directive: =metadata

Around line 16684:

Unknown directive: =method

Around line 16689:

Unknown directive: =signature

Around line 16693:

Unknown directive: =metadata

Around line 16719:

Unknown directive: =method

Around line 16725:

Unknown directive: =signature

Around line 16729:

Unknown directive: =metadata

Around line 16747:

=cut found outside a pod block. Skipping to next block.

Around line 16767:

=cut found outside a pod block. Skipping to next block.

Around line 16800:

=cut found outside a pod block. Skipping to next block.

Around line 16823:

Unknown directive: =partials