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.