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

NAME

MooX::Attribute::ENV - Allow Moo attributes to get their values from %ENV

SYNOPSIS

  package MyMod;
  use Moo;
  use MooX::Attribute::ENV;
  # look for $ENV{attr_val} and $ENV{ATTR_VAL}
  has attr => (
    is => 'ro',
    env_key => 'attr_val',
  );
  # looks for $ENV{otherattr} and $ENV{OTHERATTR}, then any default
  has otherattr => (
    is => 'ro',
    env => 1,
    default => 7,
  );
  # looks for $ENV{xxx_prefixattr} and $ENV{XXX_PREFIXATTR}
  has prefixattr => (
    is => 'ro',
    env_prefix => 'xxx',
  );
  # looks for $ENV{MyMod_packageattr} and $ENV{MYMOD_PACKAGEATTR}
  has packageattr => (
    is => 'ro',
    env_package_prefix => 1,
  );

  $ perl -MMyMod -E 'say MyMod->new(attr => 2)->attr'
  # 2
  $ ATTR_VAL=3 perl -MMyMod -E 'say MyMod->new->attr'
  # 3
  $ OTHERATTR=4 perl -MMyMod -E 'say MyMod->new->otherattr'
  # 4

DESCRIPTION

This is a Moo extension. It allows other attributes for "has" in Moo. If any of these are given, then instead of the normal value-setting "chain" for attributes of given, default; the chain will be given, environment, default.

The environment will be searched for either the given case, or upper case, version of the names discussed below.

When a prefix is mentioned, it will be prepended to the mentioned name, with a _ in between.

ADDITIONAL ATTRIBUTES

env

Boolean. If true, the name is the attribute, no prefix.

env_key

String. If true, the name is the given value, no prefix.

env_prefix

String. The prefix is the given value.

env_package_prefix

Boolean. If true, use as the prefix the current package-name, with :: replaced with _.

AUTHOR

Ed J, porting John Napiorkowski's excellent MooseX::Attribute::ENV.

LICENCE

The same terms as Perl itself.