sub enum { my ($attr, $value, $constraints) = @_; my $enum_values = $constraints->{enum}; if (scalar @$enum_values) { if (! (grep /^$value$/, @$enum_values)) { my $enum_values_string = join ', ', @$enum_values; return "Attribute $attr is enum type but value '$value' isn't one of '$enum_values_string'"; } } return 0; }