Actions Status GitHub Issues MetaCPAN Release Coverage

NAME

Aion::Env - создаёт константу связанную со значением из .env

VERSION

0.1

SYNOPSIS

Файл .env:

BIN_TEST=10
OCT_TEST=${BIN_TEST}20
BEGIN {
	delete @ENV{qw/BIN_TEST OCT_TEST BB_TEST NN_TEST/};

	$ENV{UNI_TEST} = 30;
}

sub Int { sub { /^-?\d+$/ } }

use Aion::Env BIN_TEST => (isa => Int);
use Aion::Env OCT_TEST => (isa => Int);
use Aion::Env UNI_TEST => (isa => Int);
use Aion::Env BB_TEST => (isa => Int, default => 1);

BIN_TEST; # -> 10
OCT_TEST; # -> 1020
UNI_TEST; # -> 30
BB_TEST; # -> 1

eval 'use Aion::Env NN_TEST => ()'; $@; # ^-> NN_TEST is'nt defined!
eval 'use Aion::Env NN_TEST => (nouname => 1)'; $@; # ^-> Unknown keyword: nouname
eval 'use Aion::Env NN_TEST => (nouname1 => 1, nouname2 => 2)'; $@; # ^-> Unknown keywords: nouname1, nouname2

DESCRIPTION

В проектах используется конфигурационный файл .env для конфигурации проекта, в Makefile, для docker и docker compose. Данный модуль позволяет оформить переменные окружения в виде констант модулей perl.

Константы инициализируются из %ENV, если там нет значения или оно undef, то из файла .env, а если и там его не будет – из опции default.

При парсинге файла, ошибка синтаксиса приведёт к исключению.

Тип переменной окружения можно проверять с помощью опции isa. Она принимает подпрограмму или объект с перегруженным оператором ${}. В этом случае значение будет передано в $_. Если объект имеет метод validate, как у Aion::Type, то будет вызван он с параметрами: значением и именем переменной окружения.

Рекомендуется называть переменные окружения используя название модуля в котором она объявлена. Например, пакет Aion::Type, тогда имена переменных окружения в нём – AION_TYPE_*.

SUBROUTINES

import ($cls, $name, %kw)

Создаёт константу с именем $name в пакете из которого вызван. Опционально можно передать в %kw isa и default.

parse ($file)

Парсит файл формата .env и возвращает хеш с переменными из него.

AUTHOR

Yaroslav O. Kosmina dart@cpan.org

LICENSE

Perl5

COPYRIGHT

The Aion::Env module is copyright © 2026 Yaroslav O. Kosmina. Rusland. All rights reserved.