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

NAME

Venus::Opts - Opts Class

ABSTRACT

Opts Class for Perl 5

SYNOPSIS

  package main;

  use Venus::Opts;

  my $opts = Venus::Opts->new(
    value => ['--resource', 'users', '--help'],
    specs => ['resource|r=s', 'help|h'],
    named => { method => 'resource' } # optional
  );

  # $opts->method; # $resource
  # $opts->get('resource'); # $resource

  # $opts->help; # $help
  # $opts->get('help'); # $help

DESCRIPTION

This package provides methods for handling command-line arguments.

ATTRIBUTES

This package has the following attributes:

named

  named(HashRef)

This attribute is read-write, accepts (HashRef) values, is optional, and defaults to {}.

parsed

  parsed(HashRef)

This attribute is read-write, accepts (HashRef) values, is optional, and defaults to {}.

specs

  specs(ArrayRef)

This attribute is read-write, accepts (ArrayRef) values, is optional, and defaults to [].

warns

  warns(ArrayRef)

This attribute is read-write, accepts (ArrayRef) values, is optional, and defaults to [].

INHERITS

This package inherits behaviors from:

Venus::Kind::Utility

INTEGRATES

This package integrates behaviors from:

Venus::Role::Accessible

Venus::Role::Buildable

Venus::Role::Proxyable

Venus::Role::Valuable

METHODS

This package provides the following methods:

default

  default() (ArrayRef)

The default method returns the default value, i.e. [@ARGV].

Since 0.01

default example 1
  # given: synopsis;

  my $default = $opts->default;

  # []

exists

  exists(Str $key) (Bool)

The exists method takes a name or index and returns truthy if an associated value exists.

Since 0.01

exists example 1
  # given: synopsis;

  my $exists = $opts->exists('resource');

  # 1
exists example 2
  # given: synopsis;

  my $exists = $opts->exists('method');

  # 1
exists example 3
  # given: synopsis;

  my $exists = $opts->exists('resources');

  # undef

get

  get(Str $key) (Any)

The get method takes a name or index and returns the associated value.

Since 0.01

get example 1
  # given: synopsis;

  my $get = $opts->get('resource');

  # "users"
get example 2
  # given: synopsis;

  my $get = $opts->get('method');

  # "users"
get example 3
  # given: synopsis;

  my $get = $opts->get('resources');

  # undef

name

  name(Str $key) (Str | Undef)

The name method takes a name or index and returns index if the the associated value exists.

Since 0.01

name example 1
  # given: synopsis;

  my $name = $opts->name('resource');

  # "resource"
name example 2
  # given: synopsis;

  my $name = $opts->name('method');

  # "resource"
name example 3
  # given: synopsis;

  my $name = $opts->name('resources');

  # undef

parse

  parse(ArrayRef $args) (Opts)

The parse method optionally takes additional Getopt::Long parser configuration options and retuns the options found based on the object args and spec values.

Since 0.01

parse example 1
  # given: synopsis;

  my $parse = $opts->parse;

  # { help => 1, resource => "users" }
parse example 2
  # given: synopsis;

  my $parse = $opts->parse(['bundling']);

  # { help => 1, resource => "users" }

set

  set(Str $key, Any $data) (Any)

The set method takes a name or index and sets the value provided if the associated argument exists.

Since 0.01

set example 1
  # given: synopsis;

  my $set = $opts->set('method', 'people');

  # "people"
set example 2
  # given: synopsis;

  my $set = $opts->set('resource', 'people');

  # "people"
set example 3
  # given: synopsis;

  my $set = $opts->set('resources', 'people');

  # undef

unnamed

  unnamed() (ArrayRef)

The unnamed method returns an arrayref of values which have not been named using the named attribute.

Since 0.01

unnamed example 1
  # given: synopsis;

  my $unnamed = $opts->unnamed;

  # [1]