<%ARGS> $name => undef $check => undef $mode => 'view' $prop => {} <%INIT> # тут надо копию массива... иначе push @{$status_map} ломает default значения в $prop->{cases} или в $keeper->default_status() my $status_map = [ @{ref $prop->{cases} eq 'ARRAY' ? $prop->{cases} : $keeper->default_status()} ]; if ($mode eq 'get') { return $status_map; } if (defined $check) { unless (grep {$_->[0] eq $check} @{$status_map}) { push @{$status_map}, [$check, "$check [unknown value]"]; } }