Aion-Env
view release on metacpan or search on metacpan
lib/Aion/Env/Etc.md view on Meta::CPAN
```
Файл etc/test.yml:
```text
test:
abc: 100
when@dev:
test:
val: 10
```
```perl
BEGIN { $ENV{APP_ENV} = 'dev' }
sub Int { sub { /^-?\d+$/ } }
use Aion::Env::Etc TEST_ABC => (isa => Int);
use Aion::Env::Etc VAL => (isa => Int, key => 'test.val');
TEST_ABC # -> -12
VAL # -> 10
```
# DESCRIPTION
ÐаÑÑÐ¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑионнÑй Ñайл. ÐÑÑÑ Ðº Ð½ÐµÐ¼Ñ Ð·Ð°Ð´Ð°Ð½ ÑнвиÑонменÑ-пеÑеменной `AION_ENV_ETC_PATH`.
РнÑм Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÐºÐ»ÑÑ `includes` c вклÑÑением дÑÑгиÑ
конÑигÑÑаÑионнÑÑ
Ñайлов, а Ñ ÑеÑ
â дÑÑгиÑ
.
ÐÐ»Ñ Ð¿ÑоÑÑоÑÑ `includes` ÑÑабаÑÑваÑÑ Ð¾Ñ ÑекÑÑего каÑалога, коÑоÑÑй должен ÑооÑвеÑÑÑвоваÑÑ ÐºÐ¾ÑÐ½Ñ Ð¿ÑоекÑа (Ñаково ÑоглаÑение).
ÐлÑÑи вида `when@ID` бÑдÑÑ Ð¿ÐµÑекÑÑваÑÑ Ñвоими клÑÑами клÑÑи конÑигÑÑаÑионного Ñайла, еÑли `ID` из ниÑ
ÑооÑвеÑÑÑвÑÐµÑ `APP_ENV`.
ХеÑи в клÑÑаÑ
, пÑи Ñовпадении клÑÑей в ÑазнÑÑ
ÑайлаÑ
, обÑединÑÑÑÑÑ ÑекÑÑÑивно. Ðднако еÑли в одном из клÑÑей не Ñ
еÑ, Ñо бÑÐ´ÐµÑ Ð²ÑбÑоÑено иÑ...
# SUBROUTINES
## import ($name, %kw)
СоздаÑÑ ÐºÐ¾Ð½ÑÑанÑÑ Ð² пакеÑе из коÑоÑого бÑл вÑзван.
ÐопÑÑÑимÑе опÑии:
* `isa` â подпÑогÑамма-ÑеÑÑÐµÑ Ð¸Ð»Ð¸ обÑÐµÐºÑ `Aion::Type` Ð´Ð»Ñ Ð¿ÑовеÑки Ñипа.
* `default` â знаÑение по ÑмолÑаниÑ.
* `key` â клÑÑ Ð¸Ð· конÑигÑÑаÑионнÑÑ
Ñайлов. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ðº Ð½ÐµÐ¼Ñ Ð¿ÑеобÑазÑеÑÑÑ Ð¸Ð¼Ñ ÐºÐ¾Ð½ÑÑанÑÑ (пеÑеводиÑÑÑ Ð² нижний ÑегиÑÑÑ Ð¸ подÑÑÑки заменÑÑ...
## parse ($path)
СÑиÑÑÐ²Ð°ÐµÑ Ð¸ паÑÑÐ¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑионнÑй Ñайл в ÑоÑмаÑе `yaml`. `${ID}` заменÑÑÑÑÑ Ð½Ð° знаÑÐµÐ½Ð¸Ñ Ð¸Ð· `%ENV`, а еÑли Ñам неÑ, Ñо из Ñайла `.env`. ÐаÑÑÐ¸Ñ ÑÐ°Ð¹Ð»Ñ Ð² ...
## merge_hashes ($file, $path, $x, $y)
ÐбединÑÐµÑ Ð´Ð²Ð° Ñ
еÑа ÑекÑÑÑивно. ÐÑли в ÑовпадаÑÑиÑ
клÑÑаÑ
не Ñ
еÑи, Ñо вÑбÑаÑÑÐ²Ð°ÐµÑ Ð¾ÑÐ¸Ð±ÐºÑ Ñ `$file` и `$path`, где `$file` â подклÑÑаÑÑийÑÑ Ñайл, а `$pat...
## val ($s)
ÐобавлÑÐµÑ Ð±ÑкÑлеÑи. ÐÑполÑзÑеÑÑÑ Ð´Ð»Ñ ÑÑкейпинга ÑнвиÑонменÑов.
```perl
my $escape_string = "\\\"\\'\\\\\\t\\r\\n";
Aion::Env::Etc::val("\"'\\\t\r\n") # -> $escape_string
```
## by_key ($hash, $path)
ÐолÑÑиÑÑ Ð·Ð½Ð°Ñение по клÑÑÑ Ð¸Ð· Ñ
еÑа.
```perl
my ($val, $key_exists) = Aion::Env::Etc::by_key({x => {y => {z => 3}}}, "x.y.z");
$val # -> 3
$key_exists # -> 1
($val, $key_exists) = Aion::Env::Etc::by_key({x => {y => {t => 10}}}, "x.y.z");
$val # -> undef
$key_exists # -> 0
```
# AUTHOR
Yaroslav O. Kosmina <dart@cpan.org>
# LICENSE
â **Perl5**
# COPYRIGHT
The Aion::Env::Etc module is copyright © 2026 Yaroslav O. Kosmina. Rusland. All rights reserved.
( run in 0.563 second using v1.01-cache-2.11-cpan-54e63673c56 )